Przejdź do głównej zawartości

Linux cz.5 (RHCSA) - podstawy środowiska linux - regex - wyrażenia regularne, grep wyszukiwanie

Podczas pracy z systemem linux od czasu do czasu trzeba dowiedzieć się czegoś o systemie i wyciągnąć jakieś informację, zlokalizować gdzie znajduje się jakiś plik lub znaleźć jakiś odpowiedni zapis w pliku ( w logu). W tym celu dobrze jest znać "wyrażenia regularne" ułatwiające poszukiwanie informacji i nie tylko. Umiejętność posługiwania się wyrażeniami regularnymi znacząco podnosi efektywność pracy z systemem i pozwala oszczędzić czas oraz nerwy w momencie gdy coś musimy znaleźć i to jak najszybciej. O ich przydatności oraz sposobie wykorzystania najlepiej przekonać się na przykładach. 

Polecenia : 

# grep - instrukcja (program) pozwalający na przeszukiwanie strumienia danych porównując go z zadanym wzorcem. Np przeszukiwanie pliku na występowanie danej frazy. 

Składnia polecenia :  # grep [opcje]  WZORZEC  [plik] 

Opcje : 
  • -w    - dopasowanie do wzorca całych wyrazów
  • -x     - dopasowanie do wzorca całej linii 
  • -E    - użycie wzorca z rozszeżonym wyrażaniem regularnym 
  • -f     - pobranie wzorca z pliku 
  • -v    - wyszukanie wszystkiego bez podanego wzorca 
  • -m [num] - zatrzymuje szukanie jeżeli znajdzie określoną ilość pasujących 
  • -R    - Rekurencyjne przeszukiwanie w przypadku katalogów
  • - color=[when] - wyświetlenie wyników w kolorze 
Zanim rozpoczniemy poszukiwanie czegoś należy zastanowić jaki wzorzec będzie najlepszy dla danego poszukiwania. Nie wystarczy wiedzieć jaką opcję zastosować dla polecenia "grep" ale również należy dobrze sobie uzmysłowić opcje wzorca. 

Opcje wzorca : 
  • [ ] - porównanie wszystkiego co znajduje się w nawiasach, dopasowywane są kolejne znaki oraz całe wyrazy także z cyframi i znakami specjalnymi. 
  • -   - Można stworzyć zakres poszukiwań np.: 1 - 20 (od 1 do 20 ) tak samo można wykorzystać tą opcję do znaków alfabetu a -z lub A - Z pamiętając by nie stosować znaku "spacji" pomiędzy znakami wpisywanymi w danym zakresie
  • ^   - Odwraca wyszukiwanie jeżeli zastosowany jest w nawiasach. pozwala znaleźć porównania rozpoczynające się od zadanego wzorca
  • .    - kropka umożliwia zastąpienie dowolnego znaku w miejscu gdzie się znajduje
  • *   - Oznacza dowolny znak łącznie z zerem lub więcej 
  • ( )  - Nawiasy okrągłe umożliwiają tworzenie kombinacji wzorców
  • |    - Szukanie wartości zgodnych z lewą lub prawą stroną często stosowany przy użyciu nawiasów ()
Dla treningu stwórzmy jakiś przykładowy plik na którym przećwiczymy wyszukiwanie. 

przyklad.txt 
_________________________________________________________________________________
Ala ma kota a kot ma ale
Inna linia z numerem 5 

Wyszukaj w tym pliku jakies slowa 

Wroclaw
Warszawa

liczba 4 jest pomiedzy 5 a 6 

0 + 8 = 8 
Ta linia przedstawia dodawanie haha 
_________________________________________________________________________________

Zadanie 1 
Jakie wyrażenie regularne wyszuka nazwy miast w przykładowym pliku ?

Odp: # grep W[ra] przyklad.txt 

Znajdziemy nazwy miast rozpoczynających się na W i zawierających "r" lub "a".

Zadanie 2 
Znajdź dowolne linie w pliku w których znajdują się liczby od 0 do 9 

Odp: # grep [0-9] przyklad.txt 

Zadanie 3 
Wyszukaj wszystkie linie nie zawierające liter 

Odp: # grep -v [A-Za-z] przyklad.txt

Zadanie 4 
Znajdź wszystkie linie zaczynające się na W 

Odp: # grep ^W przyklad.txt

Zadanie 5 
Znajdź wszystkie linie kończące się na "a"

Odp: # grep a$ przyklad.txt

Jeżeli znamy już sposób konstruowania wyrażeń regularnych prawdopodobnie w tej chwili do głowy mogą przychodzić niezliczone ilości możliwych kombinacji pozwalających na wyszukanie dowolnej frazy w pliku.  W wyrażeniach regularnych tkwi taka siła, że poświęcono temu zagadnieniu nie jedną książkę. 

Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)