Jak używać AWK i wyrażeń regularnych do filtrowania tekstu lub ciągów w plikach
- 4095
- 1326
- Juliusz Janicki
Kiedy uruchamiamy określone polecenia w UNIX/Linux, aby odczytać lub edytować tekst z ciągu lub pliku, większość czasu próbujemy filtrować wyjście do danej sekcji zainteresowania. Tutaj przydaje się użycie wyrażeń regularnych.
Przeczytaj także: 10 Przydatnych operatorów łączenia Linuksa z praktycznymi przykładami
Jakie są wyrażenia regularne?
Wyrażenie regularne można zdefiniować jako ciągi reprezentujące kilka sekwencji znaków. Jedną z najważniejszych rzeczy w wyrażeniach regularnych jest to, że pozwalają one filtrować wyjście polecenia lub pliku, edytować sekcję tekstu lub pliku konfiguracyjnego i tak dalej.
Cechy wyrażenia regularnego
Wyrażenia regularne są wykonane z:
- Zwykłe postacie takie jak przestrzeń, podkreślenie (_), A-Z, A-Z, 0-9.
- Meta postaci które są rozszerzone na zwykłe znaki, obejmują one:
(.)
Pasuje do dowolnej pojedynczej postaci oprócz nowej linii.(*)
Dopasowuje zero lub więcej egzystencji bezpośredniego postaci poprzedzającego go.[ postacie) ]
Pasuje do dowolnego z znaków określonych w postaciach, można również użyć łącznika(-)
znaczyć szereg znaków, takich jak[A-F]
,[1-5]
, i tak dalej.^
Pasuje do początku linii w pliku.$
pasuje do końca linii w pliku.\
To postać ucieczki.
Aby filtrować tekst, trzeba użyć narzędzia do filtrowania tekstu, takiego jak Awk. Możesz myśleć o Awk jako własny język programowania. Ale dla zakresu tego przewodnika do używania Awk, Przyjrzymy to jako proste narzędzie do filtrowania wiersza poleceń.
Ogólna składnia AWK to:
# Awk „Script” nazwa pliku
Gdzie 'scenariusz'
jest zestawem poleceń, które są rozumiane przez Awk i są wykonane w pliku, nazwa pliku.
Działa, czytając dany wiersz w pliku, wykonuje kopię wiersza, a następnie wykonuje skrypt na wierszu. Jest to powtarzane na wszystkich wierszach w pliku.
'scenariusz'
jest w formie „/ wzór/ akcja”
Gdzie wzór jest wyrażeniem regularnym i działanie jest to, co zrobi AWK, gdy znajdzie dany wzór w linii.
Jak używać narzędzia filtrowania AWK w Linux
W poniższych przykładach skupimy się na metalach, które omówiliśmy powyżej w cechach AWK.
Prosty przykład używania AWK:
Poniższy przykład drukuje wszystkie wiersze w pliku /etc/hosts Ponieważ nie podano żadnego wzorca.
# awk '//print '/etc/hostsAWK drukuje wszystkie linie w pliku
Użyj AWK z wzorem:
I przykład poniżej, wzór Lokalny Gospodarz
został podany, więc Awk będzie pasował do linii Lokalny Gospodarz w /etc/hosts
plik.
# awk '/Lokalny Gospodarz/print ' /etc /hostsDrukuj AWK podany pasującą linię w pliku
Używając AWK z (.) Dzika karta w wzorze
(.)
będzie pasować do ciągów zawierających loc, Lokalny Gospodarz, Localnet W poniższym przykładzie.
To jest do powiedzenia * l Some_Single_Character C *.
# awk '/l.C/print ' /etc /hostsUżyj AWK do drukowania pasujących ciągów w pliku
Używanie AWK z postacią (*) w wzorze
Będzie pasował do ciągów zawierających Lokalny Gospodarz, Localnet, linie, zdolny, Jak w poniższym przykładzie:
# awk '/l*c/print ' /etc /localhostUżyj AWK, aby dopasować ciągi w pliku
Uświadomicie się też (*)
próbuje uzyskać najdłuższy możliwy mecz, jaki może wykryć.
Spójrz na sprawę, która to pokazuje, weź wyrażenie regularne t*t
co oznacza, że meczowe sznurki zaczynają się od litera T
i kończą się T
w linii poniżej:
To jest Tecmint, w którym otrzymujesz najlepsze dobre samouczki, jak to zrobić, przewodniki, tecmint.
Użyj następujących możliwości, gdy użyjesz wzoru /t*t/
:
to jest tecmint, to jest tecmint, gdzie dostajesz t, że jest to tecmint, gdzie otrzymujesz najlepsze dobre, to jest tecmint, gdzie dostajesz najlepsze dobre samouczki, jak to jest tecmint, gdzie masz najlepsze dobre samouczki , jak TO, przewodniki, to jest tecmint, gdzie otrzymujesz najlepsze dobre samouczki, jak TO, przewodniki, tecmint
I (*)
W /t*t/
Postać Wild Card pozwala AWK wybrać ostatnią opcję:
To jest Tecmint, w którym otrzymujesz najlepsze dobre samouczki, jak to zrobić, przewodniki, tecmint
Używanie AWK z zestawem [znaków (S)]
Weźmy na przykład zestaw [al1]
, Tutaj AWK będzie pasował do wszystkich strun zawierających charakter A
Lub L
Lub 1
w wierszu w pliku /etc/hosts.
# awk '/[al1]/print ' /etc /hostsUżyj-AWK do drukowania pasującego znaku w pliku
Następny przykład pasuje do sznurków, zaczynając od jednego z nich K
Lub k
śledzony przez T
:
# awk '/[Kk] t/print ' /etc /hostsUżyj AWK, aby wydrukować dopasowany ciąg w pliku
Określanie znaków w zakresie
Zrozum postacie z AWK:
[0-9]
oznacza pojedynczą liczbę[A-Z]
oznacza, że dopasuj pojedynczą literę o niższej liście[A-Z]
oznacza dopasowanie pojedynczej litery górnej[a-za-z]
oznacza, że dopasuj jedną literę[A-ZA-Z 0-9]
oznacza, że dopasuj pojedynczą literę lub numer
Spójrzmy na przykład poniżej:
# awk '/[0-9]/print ' /etc /hostsUżyj AWK, aby wydrukować pasujące numery w pliku
Cała linia z pliku /etc/hosts zawierać co najmniej jedną liczbę [0-9]
W powyższym przykładzie.
Użyj AWK z (^) meta
Dopasowuje wszystkie linie, które zaczynają się od wzoru podanego jak w poniższym przykładzie:
# awk '/^fe/print ' /etc /hosts # awk'/^ff/print ' /etc /hostsUżyj AWK, aby wydrukować wszystkie pasujące linie z wzorem
Użyj AWK z ($) meta
Dopasowuje wszystkie linie kończące się z dostarczonym wzorem:
# awk '/AB $/print ' /etc /hosts # awk'/OST $/print ' /etc /hosts # awk'/rs $/print ' /etc /hostsUżyj AWK, aby wydrukować podany ciąg
Użyj AWK z postacią ucieczki (\)
Pozwala ci wziąć postać za nią jako dosłownie, czyli to, rozważ to tak, jak jest.
W poniższym przykładzie pierwsze polecenie wydrukuje całą linię w pliku, drugie polecenie nic nie drukuje, ponieważ chcę dopasować linię, która ma 25 USD.00, Ale nie jest używana postać ucieczki.
Trzecie polecenie jest prawidłowe, ponieważ do odczytania zostanie użyta znak ucieczki $ jak to jest.
# awk '//Print oferty.txt # awk '/25 USD.00/Print oferty.txt # awk '/\ 25 $.00/Print oferty.tekstUżyj AWK z znakiem ucieczki
Streszczenie
To nie wszystko z Awk Narzędzie filtrowania wiersza poleceń, przykłady powyżej podstawowych operacji AWK. W następnych częściach będziemy postępować w zakresie używania złożonych funkcji AWK. Dziękujemy za przeczytanie i wszelkie dodatki lub wyjaśnienia, opublikuj komentarz w sekcji komentarzy.
- « SMEM-zgłasza zużycie pamięci na proces i podstawa dla użytkownika w Linux
- Jak używać AWK do drukowania pól i kolumn w pliku »