grep
grep – polecenie występujące w Uniksie i systemach pochodnych. Z danego tekstu pokazuje linie, które pasują do wzorca.
Spis treści
Użycie
$ grep [opcje] <wzorzec> [plik]
-
opcje
– opcjonalne przełączniki; -
wzorzec
– co grep ma dopasowywać; -
plik
– plik, w którym grep będzie szukać wzorca. Jeżeli go nie będzie, zostanie użyte standardowe wejście.
Najczęściej używane przełączniki
-
-A x
– pokazuje x linii po znalezionym wzorcu -
-B x
– pokazuje x linii przed znalezionym wzorcem -
-x
– zaznacza tylko te dopasowania, które pasują do całej linii -
-i
– „znieczula” grepa na wielkość liter. W tym przypadku wyrazy Linux i LInuX będą traktowane jak identyczne. -
-E
– używa rozszerzonych wyrażeń regularnych
Przykłady
Przykład 1 – z użyciem potoku
Wywołanie ls | grep txt
w przykładowym folderze wypisze:
$ ls | grep txt
do zrobienia.txt
linuxwiki.txt
moje notatki.txt
Przy użyciu potoku program ls przekazał grepowi listę plików używając standardowego wejścia. Grep otrzymał listę i pokazał tylko linie, które zawierały podany wzorzec (txt).
Przykład 2 – z plikiem
Wywołanie grep "Panno Święta" "pan tadeusz.txt"
w przykładowym folderze zawierającym tekst pierwszej księgi Pana Tadeusza w pliku pan tadeusz.txt
wypisze:
$ grep "Panno Święta" "pan tadeusz.txt"
Panno Święta, co jasnej bronisz Częstochowy
Przykład 3 – z „kontekstem”
Gdy nie wiadomo, skąd pochodzi fragment (tak jak w powyższym przykładzie), przydadzą nam się opcje -A
oraz -B
. Chcemy zobaczyć 4 linie przed i 3 linie po tej z wzorcem. Zakładamy, że do zorientowania się wystarczy. Tak więc wywołanie komendy grep -B 4 -A 3 "Panno Święta" "pan tadeusz.txt"
w przykładowym folderze wypisze na ekran:
$ grep -B 4 -A 3 "Panno Święta" "pan tadeusz.txt"
Ile cię trzeba cenić, ten tylko się dowie,
Kto cię stracił. Dziś piękność twą w całej ozdobie
Widzę i opisuję, bo tęsknię po tobie.
'''Panno Święta, co jasnej bronisz Częstochowy'''
I w Ostrej świecisz Bramie! 2 Ty, co gród zamkowy
Nowogródzki ochraniasz z jego wiernym ludem!
Jak mnie dziecko do zdrowia powróciłaś cudem
W celu łatwiejszego zorientowania się linia z wzorcem została oznaczona przez pogrubienie. W normalnych warunkach grep tego nie robi.
Ciekawostki
- Istnieją takie polecenia jak egrep i fgrep. egrep to to samo co grep wywołany z parametrem -E, a fgrep – z parametrem -f
|