Łą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 DevOps Bootcamp 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 DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp 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:
sedjest zazwyczaj lepszy do prostych przekształceń i zastępowania wiersz po wierszu. Jest edytorem strumieniowym.awklepiej 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.99Jakie 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!
seddoskonale sprawdza się w filtrowaniu i zastępowaniu tekstu wiersz po wierszu, wykorzystując wyrażenia regularne do zaawansowanego dopasowywania i zastępowania.awkoferuje 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 jakmatch(),substr(),sub()igsub().
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 DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp 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 DevOps Bootcamp 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ąć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp 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 DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp 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
- Wprowadzenie do wyrażeń regularnych (regex)
- Zaawansowane użycie grep z wyrażeniami regularnymi
- Łączenie wyrażeń regularnych z sed/awk
- Grupy przechwytujące, odwołania wsteczne i podstawianie