Zaawansowana manipulacja tekstem (sed, awk)
Pozna Pan/Pani narzędzie „sed” do edycji strumieniowej oraz „awk” do zaawansowanego przetwarzania tekstu, wyszukiwania wzorców i wyodrębniania danych.
Zaawansowana manipulacja tekstem (sed, awk) to bezpłatna lekcja Linux Command Line & Bash Scripting Mastery na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Linux Command Line & Bash Scripting Mastery, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Linux Command Line & Bash Scripting Mastery zawiera 4 lekcji w sumie.
Edycja strumieni za pomocą sed
sed, skrót od „stream editor”, to zaawansowane narzędzie wiersza poleceń do analizowania i przekształcania tekstu. Przetwarza strumienie tekstu wiersz po wierszu. Można traktować je jak nieinteraktywny edytor tekstu.
sed odczytuje wiersz, stosuje polecenie (takie jak zastąpienie lub usunięcie), wyświetla wynik, a następnie przechodzi do następnego wiersza. Dzięki temu bardzo wydajnie obsługuje duże pliki lub dane przekazywane potokiem.
Proste zastępowanie tekstu
Najczęstszym zastosowaniem sed jest zastępowanie tekstu. Używamy polecenia s, po którym następuje separator (często /), wyszukiwany wzorzec, kolejny separator, tekst zastępujący i końcowy separator.
Składnia: sed 's/pattern/replacement/' filename
Spróbuj zastąpić słowo „apple” słowem „orange” w przykładowym pliku:
#!/bin/bash
# Create a sample file
echo "I like red apple." > fruits.txt
echo "My favorite fruit is apple." >> fruits.txt
echo "Another apple here." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command:"
sed 's/apple/orange/' fruits.txt
# Clean up
rm fruits.txtGlobalne i niewrażliwe na wielkość liter
Domyślnie sed zastępuje tylko pierwsze wystąpienie wzorca w każdym wierszu. Aby zastąpić wszystkie wystąpienia w wierszu, użyj flagi g (globalnej).
Aby wyszukiwanie nie uwzględniało wielkości liter, użyj flagi i. Flagi można łączyć, na przykład jako gi.
Przykład: zastąp wszystkie wystąpienia tekstu „apple” (bez uwzględniania wielkości liter) tekstem „banana”.
#!/bin/bash
# Create a sample file
echo "Apple is good." > fruits.txt
echo "I eat an apple and another Apple." >> fruits.txt
echo "Apples are tasty." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command (s/apple/banana/gi):"
sed 's/apple/banana/gi' fruits.txt
# Clean up
rm fruits.txtUsuwanie wierszy za pomocą sed
Za pomocą sed można również usuwać całe wiersze pasujące do określonego wzorca. Służy do tego polecenie d.
Składnia: sed '/pattern/d' filename
Jest to przydatne do usuwania niepotrzebnych wierszy, takich jak wpisy dziennika zawierające „DEBUG” lub puste wiersze.
Usuńmy wiersze zawierające „error”:
#!/bin/bash
# Create a sample file
echo "INFO: User logged in." > log.txt
echo "WARNING: Disk space low." >> log.txt
echo "ERROR: File not found." >> log.txt
echo "INFO: Operation complete." >> log.txt
echo "ERROR: Permission denied." >> log.txt
echo "Original content:"
cat log.txt
echo ""
echo "---"
echo "Running sed command (/error/d):"
sed '/error/d' log.txt
# Clean up
rm log.txtawk: język skanowania wzorców
awk to kolejne zaawansowane narzędzie do przetwarzania tekstu, często używane do wyodrębniania danych i tworzenia raportów. Podczas gdy sed jest edytorem strumieniowym, awk przypomina bardziej język programowania zaprojektowany do pracy z tekstem.
awk przetwarza pliki tekstowe wiersz po wierszu, podobnie jak sed. Każdy wiersz traktuje jednak jako „rekord” i dzieli rekordy na „pola” (kolumny) na podstawie separatora.
Domyślnie awk używa białych znaków (spacji i tabulatorów) jako separatora pól.
Dostęp do pól danych
W awk pola są oznaczane jako $1, $2, $3 itd. $0 reprezentuje cały wiersz.
Konkretne pola można wyświetlać za pomocą polecenia print umieszczonego w nawiasach klamrowych {}. Składnia wygląda następująco: awk '{ print $FIELD_NUMBER }' filename
Wyświetlmy pierwsze i trzecie pole z prostego pliku danych:
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (print $1, $3):"
awk '{print $1, $3}' data.txt
# Clean up
rm data.txtFiltrowanie wierszy za pomocą awk
Podobnie jak sed, awk może filtrować wiersze na podstawie wzorców. Wzorzec należy podać przed blokiem akcji. Akcja zostanie wykonana tylko dla wierszy pasujących do wzorca.
Składnia: awk '/pattern/ { action }' filename
Znajdźmy i wyświetlmy tylko imiona osób z „London”:
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "David 28 London" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (/London/ {print $1}):"
awk '/London/ {print $1}' data.txt
# Clean up
rm data.txtInicjalizacja i finalizacja za pomocą awk
awk umożliwia określenie akcji wykonywanych przed przetworzeniem jakiegokolwiek wiersza (blok BEGIN) oraz po przetworzeniu wszystkich wierszy (blok END).
Bloki BEGIN świetnie nadają się do wyświetlania nagłówków lub inicjalizowania zmiennych. Bloki END doskonale sprawdzają się przy wyświetlaniu podsumowań, sum lub stopek.
Dodajmy nagłówek i stopkę do naszych danych wyjściowych:
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (BEGIN/END):"
awk 'BEGIN { print "--- User Data ---" } { print $1, $2 } END { print "--- End Report ---" }' data.txt
# Clean up
rm data.txtLogika warunkowa w awk
W blokach akcji awk można używać instrukcji if, aby stosować logikę zależną od wartości pól lub innych warunków. Dzięki temu awk świetnie nadaje się do złożonego filtrowania i przekształcania danych.
Składnia: awk '{ if (condition) { action } }' filename
Wyświetlmy tylko użytkowników starszych niż 25 lat:
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Diana 27 Berlin" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (if $2 > 25):"
awk '{ if ($2 > 25) { print $1, $2 } }' data.txt
# Clean up
rm data.txtSzybkie sprawdzenie: sed i awk
Rozważmy następującą zawartość pliku o nazwie names.txt:
John Doe,30,New York
Jane Smith,25,London
Peter Jones,40,Paris
Za pomocą którego z poniższych poleceń zostaną wyświetlone tylko imiona (pierwsze pole) osób w wieku powyżej 30 lat?
Podsumowanie: możliwości sed i awk
Udało się Państwu poznać możliwości sed w zakresie edycji strumieniowej oraz awk w zaawansowanym przetwarzaniu tekstu!
seddoskonale nadaje się do prostych zamian, usuwania i przekształcania danych wiersz po wierszu.awkświetnie sprawdza się przy analizowaniu tekstu strukturalnego, pracy z polami oraz stosowaniu logiki warunkowej do wyodrębniania danych i tworzenia raportów.
Narzędzia te są niezbędne w skryptach, analizie dzienników i manipulowaniu danymi w środowisku Linux.
Często zadawane pytania
Czy lekcja „Zaawansowana manipulacja tekstem (sed, awk)” jest bezpłatna?
Tak — pełny tekst „Zaawansowana manipulacja tekstem (sed, awk)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Linux Command Line & Bash Scripting Mastery, przejdź na CoddyKit PRO. Kurs Linux Command Line & Bash Scripting Mastery zawiera 4 lekcji w sumie.
Co nauczysz się w „Zaawansowana manipulacja tekstem (sed, awk)”?
Pozna Pan/Pani narzędzie „sed” do edycji strumieniowej oraz „awk” do zaawansowanego przetwarzania tekstu, wyszukiwania wzorców i wyodrębniania danych. Ćwiczysz Linux Command Line & Bash Scripting Mastery z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Linux Command Line & Bash Scripting Mastery?
Nie wymagamy żadnego doświadczenia. Linux Command Line & Bash Scripting Mastery w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Zaawansowana manipulacja tekstem (sed, awk)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Linux Command Line & Bash Scripting Mastery?
Tak. Każda lekcja Linux Command Line & Bash Scripting Mastery zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Zaawansowana manipulacja tekstem (sed, awk)
- Archiwizowanie i kompresja (tar, gzip, unzip)
- Wykorzystanie dysku i informacje o systemie (df, du, uname)
- Sortowanie i usuwanie duplikatów danych (sort, uniq, cut)