poradniki

Polecenie grep wyszukiwanie wyra偶e艅 w tek艣cie Linux

wpis_header_img
GREP czyli Global Express Expression Print to narz臋dzie uniksowe zaprojektowane do wykonywania powtarzalnego wyszukiwania plik贸w i tekstu. Mo偶emy wyszukiwa膰 pliki i ich zawarto艣膰 w celu pobrania przydatnych informacji, okre艣laj膮c okre艣lone kryteria wyszukiwania za pomoc膮 polecenia grep. M贸wi膮c pro艣ciej grep s艂u偶y do wyszukiwania tre艣ci w plikach. Sk艂adnia polecenia grep jest nast臋puj膮ca:
grep [-opcje] wzorzec [plik lub 艣cie偶ka]

Polecenie grep

Najcz臋艣ciej u偶ywane opcje grep:

-i ignoruje wielko艣膰 liter
-r wyszukuje r贸wnie偶 w sub katalogach 艣cie偶ki
-l pokazuje nazwy plik贸w, w kt贸rych znajduje si臋 pasuj膮cy wzorzec
-n pokazuje lini臋, w kt贸rej wyst臋puje szukany wzorzec
-v pokazuje linie, kt贸re nie zawieraj膮 wzorca
-F traktuje szukany wzorzec, jako escapowany string
-E traktuje szukany wzorzec, jako rozszerzone wyra偶enie regularne
-e informuje, 偶e nast臋pny argument, jest wzorcem

grep -e '-wzorzec'

-c zwr贸ci nam liczb臋 pasuj膮cych fraz
-x zwr贸ci wynik, tylko i wy艂膮cznie, je偶eli pasuje ca艂a linia
-m[cyfra] przerwie wyszukiwanie, po znalezieniu pierwszych [cyfra] rezultat贸w

rep -m50 'error 35'

Znaki specjalne:

W celu skutecznego znalezienia fraz, kt贸re nas interesuj膮, niekt贸re znaki powinny by膰 escapeowane, s膮 to m.in.

; ' " ` # $ & * ? [ ] < >  { } \ | ( )

Escapeowania dokonujemy za pomoc膮 backslasha \, przyk艂adowo:

grep '125\*\*\*\*125' plik

pozwoli nam, na wyszukanie 125****125 w pliku. Co ciekawe, jeste艣my r贸wnie偶 w stanie, znale藕膰 to bez escapeowania, za pomoc膮 opcji -F, tj.

grep -F '125****125' plik

Szukanie listy element贸w:

Istnieje mo偶liwo艣膰 wyszukiwania listy znak贸w, za pomoc膮 [][1-9] da nam taki sam rezultat, jak [123456789][a-d] da nam taki sam rezultat, jak [abcd]

Je偶eli chcemy wyszuka膰 wyst臋powanie jakich艣 s艂贸w, mo偶emy skorzysta膰 z:

grep 'slowo_pierwsze\|slowo_drugie'

lub w jeszcze innej postaci:

grep 'Zam贸wienie numer \(1\|3\)'

kt贸re zwr贸ci nam wyst臋powanie fraz:
Zam贸wienie numer 1 lub Zam贸wienie numer 3

Apostrof, czy cudzys艂贸w?

Dobr膮 praktyk膮, jest u偶ywanie apostrof贸w, zamiast cudzys艂owu. Szukana fraza, w apostrofie traktowana jest jako string, natomiast w cudzys艂owie, jest interpretowana.
Najpro艣ciej, mo偶na to zobaczy膰 na przyk艂adzie:

echo "$(date)"

zwr贸ci nam dat臋, natomiast:

echo '$(date)'

zostanie potraktowane jako string.

Wyra偶enia regularne oraz 艂膮czenie polece艅:

Polecenie grep obs艂uguje r贸wnie偶 wyra偶enia regularne, przyk艂adowo, chcemy znale藕膰 adresy IP, wyst臋puj膮ce w pliku:

grep -E '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' plik

mo偶na r贸wnie偶 艂膮czy膰 grepa z innymi komendami, za pomoc膮 potoku:

tail -f acces.log | grep ' 200 '

powy偶sza linijka, poka偶e nam 鈥瀗a 偶ywo鈥, wszystkie wpisy, wpadaj膮ce z kodem 200.

Scroll to Top
Skip to content