Jak używać Regex z poleceniem „AWK”

Jak używać Regex z poleceniem „AWK”

Wyrażenie regularne (Regex) służy do znalezienia danej sekwencji znaków w pliku. Do zdefiniowania wzoru można użyć symboli, takich jak litery, cyfry i znaki specjalne. Różne zadania można łatwo wykonać za pomocą wzorów do regularności. W tym samouczka.

Podstawowe znaki używane we wzorach

Do zdefiniowania wzoru od regularności można użyć wielu znaków. Znaki najczęściej używane do definiowania wzorców wyrabiania są zdefiniowane poniżej.

Postać Opis
. Dopasuj dowolną postać bez nowej linii (\ n)
\ Cytuj nowy meta-znak
^ Dopasuj początek linii
$ Dopasuj koniec linii
| Zdefiniuj alternatywę
() Zdefiniuj grupę
[] [] Zdefiniuj klasę postaci
\ w Dopasuj dowolne słowo
\S Dopasuj dowolny znak białej przestrzeni
\D Dopasuj dowolną cyfrę
\B Dopasuj dowolną granicę słów

Utwórz plik

Aby śledzić ten samouczek, utwórz plik tekstowy o nazwie produkty.tekst. Plik powinien zawierać cztery pola: id, nazwa, typ i cena.

ID Nazwa Cena

P1001 15 "Monitor Monitor 100 USD

P1002 mysz myszka A4Tech 10 USD

P1003 Drukarka do drukarki Samsung 50 USD

P1004 skaner skanera HP 60 USD

P1005 Mysz myszka Logitech 15 USD

Przykład 1: Zdefiniuj wzór regex za pomocą klasy znaków

Poniższe polecenie „AWK” będzie wyszukiwać i wydrukować wiersze zawierające postać „n ', a następnie postacie„ er ”.

produkty $ cat.tekst
$ awk '/ [n] [er]/ print 0 $' produkty.tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. Wyjście pokazuje linię pasującą do wzoru. Tutaj tylko jedna linia pasuje do wzoru.

Przykład 2: Zdefiniuj wzór regex za pomocą symbolu „^”

Poniższe polecenie „AWK” będzie wyszukiwać i wydrukować wiersze, które zaczynają się od postaci „P” i zawiera numer 3.

produkty $ cat.tekst
$ awk '/^p.*3/ drukuj 0 $ produkty.tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. Tutaj jest jedna linia, która pasuje do wzoru.

Przykład 3: Zdefiniuj wzór regularności za pomocą funkcji GSUB

gsub () Funkcja służy do globalnego wyszukiwania i wymiany tekstu. Poniższe polecenie „AWK” będzie wyszukiwać słowo „skaner” i zastąpi je słowem „router” przed wydrukowaniem wyniku.

produkty $ cat.tekst
produkty $ awk 'gsub (/scanner/, „router”).tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. Jest jedna linia, która zawiera słowo 'Skaner', I 'Skaner„Jest zastąpiony słowem”Router„Przed wydrukowaniem linii.

Przykład 4: Zdefiniuj wzór regex z „*”

Poniższe polecenie „AWK” wyszuka i wydrukuje dowolny ciąg, który rozpoczyna się od „MO” i zawiera dowolną kolejną postać.

produkty $ cat.tekst
$ awk '/ mo*/ print $ 0' produkty.tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. Trzy linie pasują do wzoru: Dwie linie zawierają słowo 'Mysz„I jedna linia zawiera słowo”Monitor'.

Przykład 5: Zdefiniuj wzór regex za pomocą symbolu „$”

Poniższe polecenie „AWK” będzie wyszukiwać i wydrukować wiersze w pliku, które kończą się numerem 5.

produkty $ cat.tekst
$ awk '/ 5 $/ print $ 0' Produkty.tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. W pliku jest tylko jedna linia, która kończy się numerem 5.

Przykład 6: Zdefiniuj wzór regex za pomocą „^” i „|” symbolika

''^`` Symbol wskazuje na początek linii i ''|„Symbol wskazuje logiczne lub stwierdzenie. Poniższe polecenie „AWK” będzie wyszukiwać i wydrukować wiersze, które zaczynają się od postaci ”P„i zawieraj alboSkaner' Lub 'Mysz'.

produkty $ cat.tekst
$ awk '/^p.* (Skaner | mysz)/'produkty.tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. Wyjście pokazuje, że dwa linie zawierają słowo 'Mysz„I jedna linia zawiera słowo”Skaner'. Trzy linie zaczynają się od postaciP'.

Przykład 7: Zdefiniuj wzór regex za pomocą symbolu „+”

''+„Operator służy do znalezienia co najmniej jednego dopasowania. Poniższe polecenie „AWK” będzie wyszukiwać i wydrukować wiersze zawierające znak ''N' przynajmniej raz.

produkty $ cat.tekst
$ awk '/n+/print'.tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. Tutaj postać 'N„zawiera przynajmniej raz w wierszach zawierających słowa Monitor, drukarka i skaner.

Przykład 8: Zdefiniuj wzór regex za pomocą funkcji gsub ()

Poniższe polecenie „AWK” będzie szukać słowa ”Drukarka„i zastąp go słowem”Monitor' używając funkcja gsub ().

produkty $ cat.tekst
$ awk 'gsub (/drukarka/, „monitor”) print $ 0 ”.tekst

Następujące dane wyjściowe zostaną wyprodukowane po uruchomieniu powyższych poleceń. Czwarta wiersz pliku zawiera słowo 'Drukarka„dwa razy i na wyjściu”Drukarka„zostało zastąpione słowem”Monitor'.

Wniosek

Do definiowania wzorców wyrabiania do różnych wyszukiwania można użyć wielu symboli i funkcji. Niektóre symbole powszechnie używane w wzorach od regularności są stosowane w tym samouczku z poleceniem „AWK”.