Napisane przez mediologia dnia . Wysłane Rozdział 8 - Wyrażenia regularne.

8.3 Polecenie grep z wyrażeniami regularnymi

 

Polecenie  grep (globally look for a regular expression end print – co na polski można przetłumaczyć: wyszukaj w pliku napisów spełniających wyrażenie regularne i wyświetl je) służy do znalezienia każdego wystąpienia słowa – ciągu znaków, frazy – w pliku utworzonym w systemie Linux. Ogólny wzór polecenia  grep można przedstawić następująco:

grep  [ opcja ]   [ -e ]  [ wzór ]    [nazwa pliku]

 

Opcje

-b wyświetla odnalezione miejsca

-c wyświetla liczbę odnalezionych wyrażeń

-h nie wypisuje nazwy plików przed każdym odnalezionym miejscem

-i ignoruje różnice w wielkości liter

-l wyświetla tylko nazwy plików w których odnaleziony został wzór

-n wyświetla numer każdego wiersza, w którym został odnaleziony wzór

-s brak wyświetlania jakichkolwiek komunikatów

-v wyświetla tylko te wiersze, które nie zawierają wzoru

-w wyświetla tylko te wiersz, w których wzór jest całym wyrazem

 

Kilka przykładów z poleceniem grep

$ grep   -n ‘^piotr:’  /etc/passwd

Wyjaśnienie: polecenie grep wyświetla na ekranie wiersz z pliku /etc/passwd który definiuje użytkownika „piotr” i dodatkowo poprzedza wiersz jego numerem w pliku /etc/passwd

 

$ ls  /   |   grep  „^r.*”

Wyjaśnienie:

 

$  ls  /   grep  „r.*”


Do nauki polecenia grep, które używane jest z wyrażeniami regularnymi musimy utworzyć plik pozwalający zaprezentować wszystkie możliwości zarówno polecenia grep jak i wyrażeń regularnych. Dane zawarte w tym pliku mogą wydawać się sztuczne lecz umożliwią nam one z względnie wystarczającym zapoznaniem się z omawianym tematem. Przy pomocy edytora vi (patrz rozdział IX) utwórzmy plik o nazwie dataplik:

Znaczenie danych zawartych w kolumnach

Kregkato               KA          Jan Kowalski                23           .98.              \3\              88

Kregkato               KA          Piotr Pawlak                23            .98.              \3\              88

Pregpod                PO         Krzysztof Wrak             25            .45.              \2\              77

Cregcent               CE          Jola Kruk                    19             .74               \1\              65

Mregmazu              MA         Urszula Kropiuk            14             .54.              \5\              85

Pregpod                PO         Zygmunt Malina            25            .45.              \2\               54

Wregwielko            WK        Marian Kluska               35             .98.              \4\              77

Greggda                 GD         Katarzyna  Polak          58             .69.              \9\              87

Cregcent                CE         Mariusz Pol                  19             .54.              \1\              77

 

przypominam, że po wpisaniu danych naciskamy przycisk [Esc] następnie wystukujemy :, który ukazuje się w dolnym lewym rogu i wprowadzamy polecenie   :wq . Plik  dataplik jest utworzony i możemy go zacząć testować przy pomocy polecenia grep zawierającego lub nie zawierającego wyrażenia regularne.

 

Przykłady:

$ grep  WK  dataplik

 Wregwielko                WK                 Marian Kluska 35            .98.              \4\               91

 

Wyjaśnienie: Na ekranie wyświetlają się linie zawierające wyrażenie regularne  WK znajdujące się w pliku dataplik

 

$ grep   ‘^C’  dataplik

Cregcent                      CE                   Jola Kruk                    19            .74               \1\              65

Cregcent                      CE                   Mariusz Pol                 19            .54.               \1\              25

Wyjaśnienie: Na ekranie wyświetlają się wszystkie linie zaczynające się od  „C”, symbol ^ pokazuje ,że szukamy wierszy które zaczynają się od znaku (czy wyrażenia regularnego) znajdującego się zanim . W tym przypadku jest to litera C.

 

$ grep  ‘4$’   dataplik

Pregpod                       PO                   Zygmunt Malina          25            .45.              \2\              54

Wyjaśnienie: Na ekranie wyświetlają się linie kończące się cyfrą „4”. Symbol  $ pokazuje, że poszukiwania znaków rozpoczynamy od końca wiersza. W tym wypadku znakiem tym jest cyfra 4.

$

 

grep  ‘4\. ’  dataplik

Cregcent                      CE                   Jola Kruk                    19            .74.              \1\               65

Mregmazu                     MA                  Urszula Kropiuk            14            .54.              \5\               85

Cregcent                      CE                   Mariusz Pol                  19            .54.              \1\               25

Wyjaśnienie: Na ekranie wyświetlają się linie zdefiniowane przez wyrażenie regularne  zawierające  zdefiniowane przez   ‘4\.  ‘  czyli wyszukujemy wierszy które zawierają cyfre cztery po której następuje kropka a następnie spacja.

 

grep  ‘\\3\\’  dataplik

Kregkato                     KA                  Jan Kowalski               23            .98.              \3\               88

Kregkato                     KA                  Piotr Pawlak               23            .98.              \3\               88

Wyjaśnienie: Na ekranie wyświetlają się linie zawierające cyfrę „3” obramowaną przez \3\

 

grep  ‘^[KW]’  dataplik

Kregkato                     KA                  Jan Kowalski               23            .98.              \3\               88

Kregkato                     KA                  Piotr Pawlak               23            .98.              \3\               88

Wregwielko                 WK                 Marian Kluska              35            .98.              \4\               91

Wyjaśnienie: Na ekranie wyświetlają się wszystkie linie zaczynające się o litery „K”  albo „W”.

 

$  grep ‘[A-Z][A-]  [A-Z][A-Z]

Kregkato                     KA                  AB Kowalski               23            .98.              \3\               88

Greggda                      GD                  DA  Polak                 58             .69.              \9\               87

 Wyjaśnienie: Na ekranie wyświetlają się linie zawierające dwie duże litery następujące natychmiast po sobie po których występuje spacja i znów dwie duże litery następujące natychmiast po sobie.

 

$  grep ‘ll* ‘  dataplik

Cregcent                      CE                   Jola Krul                     19            .74               \1\               65

Cregcent                      CE                   Mariusz Poll                 19            .54.              \1\               25

Wyjaśnienie: Na ekranie wyświetlają się linie zawierające małą literę „l” po której występuje zero lub więcej razy także mała litera „l” po której następuje spacja

 

 

Wyrażenia Regularne Rozdział 8.2 Darmowy kurs Linux

Grep