0Pricing
Linux Command Line & Bash Scripting Mastery · Lekcja

Łączenie wyrażeń regularnych z sed/awk

Połączy Pan/Pani wyrażenia regularne z poleceniami „sed” i „awk”, aby zaawansowanie filtrować i zastępować tekst oraz wyodrębniać dane.

Łączenie wyrażeń regularnych z sed/awk to bezpłatna lekcja Linux Command Line & Bash Scripting Mastery na CoddyKit. To lekcja 3 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.

Wyrażenia regularne w sed i awk

Witamy w ostatniej lekcji poświęconej wyrażeniom regularnym! Poznaliśmy możliwości wyrażeń regularnych w dopasowywaniu wzorców.

Teraz połączmy tę funkcjonalność z dwoma niezbędnymi narzędziami systemu Linux: sed (edytorem strumieniowym) i awk (językiem skanowania i przetwarzania wzorców). Integracja ta umożliwia zaawansowane filtrowanie, zastępowanie i wyodrębnianie danych tekstowych.

sed: filtrowanie za pomocą wyrażeń regularnych

sed może używać wyrażeń regularnych do filtrowania wierszy. Adres /pattern/ pozwala poleceniu sed wykonywać polecenia tylko dla wierszy pasujących do podanego wyrażenia regularnego.

Opcja -n wyłącza domyślne wyjście, a p jawnie wyświetla pasujące wiersze.

echo -e "apple
banana
orange" | sed -n '/an/p'

sed: zastępowanie za pomocą wyrażeń regularnych

Polecenie s/regex/replacement/ w sed pokazuje pełnię możliwości wyrażeń regularnych w przekształcaniu tekstu. Umożliwia zastępowanie wzorców znalezionych za pomocą wyrażenia regularnego nowym tekstem.

Flaga g zastępuje wszystkie wystąpienia w wierszu, a i sprawia, że wielkość liter nie ma znaczenia.

echo "Hello world, hello universe" | sed 's/hello/hi/gi'

sed: grupy przechwytujące i odwołania wsteczne

Wyrażenia regularne pozwalają definiować grupy przechwytujące za pomocą nawiasów (). Następnie można odwoływać się do tekstu dopasowanego przez te grupy w ciągu zastępującym, używając odwołań wstecznych, takich jak \1, \2 itd.

Użyj -E z sed, aby korzystać z rozszerzonej składni wyrażeń regularnych (np. używać () bez znaków ucieczki).

echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'

awk: filtrowanie rekordów za pomocą wyrażeń regularnych

awk używa wzorców wyrażeń regularnych do wybierania rekordów (wierszy) przed wykonaniem działań. Jeśli przed blokiem działania {...} podano wzorzec, działanie zostanie wykonane tylko dla wierszy pasujących do wzorca.

Przypomina to grep, ale umożliwia bardziej złożone przetwarzanie.

echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'

awk: wyrażenia regularne dla określonych pól

W awk można stosować wyrażenia regularne do określonych pól za pomocą operatorów ~ (pasuje) i !~ (nie pasuje). Jest to bardzo przydatne w przypadku danych strukturalnych.

Na przykład $1 ~ /pattern/ sprawdza, czy pierwsze pole pasuje do wyrażenia regularnego.

echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'

awk: wyodrębnianie dopasowań (match, substr)

awk udostępnia funkcje takie jak match(string, regex) do znajdowania pozycji i długości dopasowania oraz substr(string, start, length) do jego wyodrębniania.

Po wywołaniu match() zmienna RSTART zawiera pozycję początkową, a RLENGTH długość dopasowania.

echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'

awk: zastępowanie w miejscu (sub, gsub)

awk ma również wbudowane funkcje zastępowania: sub(regex, replacement, target) dla pierwszego dopasowania oraz gsub(regex, replacement, target) dla wszystkich dopasowań.

Jeśli parametr target zostanie pominięty, używane jest $0 (cały rekord). Można określić konkretne pole, takie jak $1.

echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'

Wybór między sed i awk

Chociaż zarówno sed, jak i awk mogą używać wyrażeń regularnych do zastępowania i filtrowania, najlepiej sprawdzają się w różnych zadaniach:

  • sed jest zazwyczaj lepszy do prostych przekształceń i zastępowania wiersz po wierszu. Jest edytorem strumieniowym.
  • awk lepiej nadaje się do przetwarzania danych strukturalnych (pól), wykonywania obliczeń oraz obsługi bardziej złożonej logiki lub wzorców obejmujących wiele wierszy. Sam w sobie jest językiem programowania.

Często można łączyć je potokami | w celu wykonywania bardzo złożonych zadań.

Wyzwanie: wyodrębnianie i przekształcanie

Rozważ następujący wiersz tekstu:

Order#12345: ProductX - Price $19.99

Jakie polecenie poprawnie wyodrębni cenę (np. „19.99”), a następnie zmieni symbol waluty na „EUR”?

Podsumowanie: wyrażenia regularne w sed i awk

Opanował(a) Pan(i) łączenie wyrażeń regularnych z sed i awk!

  • sed doskonale sprawdza się w filtrowaniu i zastępowaniu tekstu wiersz po wierszu, wykorzystując wyrażenia regularne do zaawansowanego dopasowywania i zastępowania.
  • awk oferuje bardziej programistyczne podejście, pozwalając filtrować rekordy za pomocą wyrażeń regularnych, dopasowywać tekst w określonych polach oraz wyodrębniać i modyfikować dane za pomocą funkcji takich jak match(), substr(), sub() i gsub().

Umiejętność ta ma kluczowe znaczenie dla zaawansowanego przetwarzania tekstu i tworzenia skryptów w systemie Linux.

Często zadawane pytania

Czy lekcja „Łączenie wyrażeń regularnych z sed/awk” jest bezpłatna?

Tak — pełny tekst „Łączenie wyrażeń regularnych z 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 „Łączenie wyrażeń regularnych z sed/awk”?

Połączy Pan/Pani wyrażenia regularne z poleceniami „sed” i „awk”, aby zaawansowanie filtrować i zastępować tekst oraz wyodrębniać dane. Ć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 3 z 4.

Ile czasu zajmuje lekcja „Łączenie wyrażeń regularnych z 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

  1. Wprowadzenie do wyrażeń regularnych (regex)
  2. Zaawansowane użycie grep z wyrażeniami regularnymi
  3. Łączenie wyrażeń regularnych z sed/awk
  4. Grupy przechwytujące, odwołania wsteczne i podstawianie
← Powrót do Linux Command Line & Bash Scripting Mastery