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