Wstęp

Dzień dobry, dziś opowiem co nieco o komendzie grep i sposobach jej uzycia. Serdecznie zapraszam.

Co to jest grep

grep – program , który służy do wyszukiwania w tekście i wyodrębniania linii zawierających ciąg znaków pasujący do podanego wyrażenia regularnego. Dla chętnych polecam filmik o historii grep’a https://youtu.be/NTfOnGZUZDk

Tryby grepa (std, extended, perl)

Grep posiada trzy główne tryby pracy. Są to: * Standardowy - Rozpoznaje wzór jako zwykłe wyrażenie regularne * Extended (rozszerzony) - Rozpoznaje wzór jako rozszerzone wyrażenie regularne * Perl mode - Rozpoznaje wzór jako wyrażenie regularne według Perl’a

Prosty grep na pliku

Załóżmy, że mamy plik plik.txt o zawartości:

ABBA
BABA
ACAB
BACA
DACA
MACA
PACA

i chcemy z niego wyciągnąć słowo ABBA w takim przypadku komenda będzie wyglądać następująco:

grep ABBA plik.txt

###
>ABBA

Prosty grep na potoku

Załóżmy, że mamy plik plik.txt z poprzedniego punktu. Jednak tym razem użyjemy programu cat by uzyskać całą zawartość i przekażemy to do programu grep. Naszym celem będzie wyciągnięcie słowa MACA. W tym celu wykorzystamy konstrukcję taką:

cat plik.txt | grep MACA

Grep po drzewie

Jeżeli szukamy danej frazy, ale nie wiemy dokładnie w którym pliku to może być, albo musimy przeszukać drzewo plików, to możemy wykorzystać opcje -R. Wtedy grep zacznie przeszukiwać nasze drzewo np. :

grep -R "client_id:1234" ./

Grep do wycinania

Jeśli nasz log posiada dużo niepotrzebnego syfu. Na przykład jakiś użyszkodnik uruchomił debug a nas nie obchodzi cała ta sieczka informacji. Możemy ja usunąć, odwracając zachowanie grep’a przy pomocy przełącznika -v. W tym przypadku nasza komenda będzie wyglądać następująco:

grep -v "{debug}” plik.log

Grep wcześniej

Pokazuje nam 3 linie nad szukaną frazą

grep -B 3 fraza plik.log

Grep później

Pokazuje nam 3 linie następujące po szukanej frazie

grep -A 3 fraza plik.log

Grep dookoła (komplementarny )

Pokazuje nam 3 poprzedzające i 3 następujące linie

grep -C 3 fraza plik.log

Cyfra 3 jest przykładowa i można ja zastąpić dowolna cyfrą lub liczbą

Grep wzór prosty (początek/koniec lini i * )

Linia zaczyna się od słowa wzor

grep „^wzor” plik.log

Linia kończy się słowem wzor

grep „wzor$” plik.log

Pomiędzy literą w a literami or może pojawić się dowolny znak

grep „w*or” plik.log

Grep wzór złożony (digit pattern, times)

Wyszukiwanie numerów telefonu (9 cyfr bez przerwy)

grep "[:digit:]{9}" plik.log lub grep [0-9]{9} plik.log

Numer telefonu rozdzielony -

grep "[0-9]{3}-[0-9]{3}-[0-9]{3}" plik.log

Kod EAN-8

grep [0-9]{8} plik.log

Kod EAN-13

grep [0-9]{13} plik.log

Epilog

Na dziś to tyle, mam nadzieję, że dowiedziałeś/łaś się czegoś nowego, albo odświeżyłeś/łaś sobie wiedzę. Tak czy inaczej, serdecznie Ci dziękuję, za przeczytanie tego posta. Jeśli masz potrzebę o cos zapytać, kontakt znajdziesz w zakładce “O Mnie”. A teraz życzę miłego dzionka i smacznej kawusi :) Do widzenia.