GREP(1) GREP(1)
grep, egrep, fgrep - wypisz linie pasujce do wzorca
grep [opcje] wzorzec [plik...]
grep [opcje] [-e wzorzec | -f plik] [plik...]
grep przeszukuje wskazane pliki wejciowe (lub standardowe wejcie jeli
nie podano adnych lub podano nazw pliku '-'), szukajc linii zawieraj-
cych co pasujcego do podanego wzorca. Domylnie, grep wypisuje pasujce
linie.
Dodatkowo dostpne s dwa programy wariantowe egrep i fgrep. Egrep jest
tym samym, co grep -E. Fgrep jest tym samym, co grep -F.
-A num, --after-context=num
Wypisuje po pasujcych liniach num linii nastpujcego kontekstu.
-a, --text
Przetwarza plik binarny tak, jakby by on tekstowy; jest to
rwnowanik opcji --binary-fnums=text.
-B num, --before-context=num
Wypisuje przed pasujcymi liniami num linii poprzedzajcego kon-
tekstu.
-C [num], -num, --context[=num]
Wypisuje num linii (domylnie 2) kontekstu w wyjciu.
-b, --byte-offset
Wypisuje przed kad lini wyjcia jej offset bajtowy w pliku wej-
ciowym.
--binary-files=typ
Jeli pierwszych kilka bajtw pliku wskazuje, e zawiera on dane
binarne, to zakadane jest, e jest to plik typu typ. Domylnym
typem jest binarny (binary), a grep normalnie albo wypisuje jed-
nolinijkowy komunikat mwicy o dopasowaniu pliku binarnego, albo
nie wypisuje komunikatu, gdy nie znaleziono dopasowania. Jeeli
typem jest without-match (bez dopasowania), to grep zakada, e
ten plik binarny nie pasuje; jest to rwnowane dziaaniu opcji -I.
Jeli typem jest text, to grep przetwarza plik binarny tak, jakby
by on tekstowy; jest to rwnowane opcji -a. Ostrzeenie: Moe si
zdarzy, e wypisane przez grep --binary-files=text miecie binarne
dadz przykre skutki uboczne jeeli wyjciem bdzie terminal a jego
sterownik zinterpretuje niektre z nich jako swoje polecenia.
-c, --count
Wycza normalne wyjcie; zamiast niego dla kadego pliku wejciowego
wypisuje liczb pasujcych linii. Z opcj -v, --invert-match
(patrz niej), liczy linie niepasujce.
-d akcja, --directories=akcja
Jeli plik wejciowy jest katalogiem, stosuje to jego
przetworzenia akcj. Domyln akcj jest read, co znaczy, e kata-
logi s czytane dokadnie tak samo, jakby byy zwykymi plikami.
Jeli wartoci akcji jest skip, to katalogi s milczco pomijane.
Jeli wartoci akcji jest recurse, to grep czyta wszystkie pliki
pod kadym katalogiem, rekurencyjnie; jest to rwnowane opcji -r.
-E, --extended-regexp
Interpretuje wzorzec jako rozszerzone wyraenie regularne (patrz
niej).
-e wzorzec, --regexp=wzorzec
Uywa wzorca jako wzorca; uyteczne do ochronienia wzorw zaczynaj-
cych si od -.
-F, --fixed-strings
Interpretuje wzorzec jako list acuchw o staej dugoci, odd-
zielonych znakami nowej linii, ktre naley dopasowa kady z
osobna.
-f plik, --file=plik
Pobiera wzorce z plik, po jednym z kadej linii. Plik pusty zaw-
iera zero wzorcw, nie pasujc do niczego.
-G, --basic-regexp
Interpretuje wzorzec jako podstawowe wyraenie regularne (zobacz
niej). Jest to zachowanie domylne.
-H, --with-filename
Dla kadego dopasowania wypisuje nazw pliku.
-h, --no-filename
-h, --no-filename Wycza poprzedzanie wynikw nazwami plikw pod-
czas przeszukiwania wielu plikw.
--help Wypisuje krtki tekst pomocy.
-I Przetwarza plik binarny tak, jakby nie zawiera on pasujcych
danych; jest to rwnowane opcji --binary-files=without-match.
-i, --ignore-case
Ignoruje rozrnienia w wielkoci liter we wzorcu oraz w plikach
wejciowych.
-L, --files-without-match
Wycza normalne wyjcie; zamiast niego wypisuje nazw kadego pliku,
z ktrego normalnie nie wypisano by adnego wyjcia. Przeszuki-
wanie zakoczy si na pierwszej pasujcej linii.
-l, --files-with-matches
Wycza normalne wyjcie; zamiast niego wypisuje nazw kadego pliku,
z ktrego normalnie wypisano by jakie wyjcie. Przeszukiwanie
zakoczy si na pierwszej pasujcej linii.
--mmap Jeli to moliwe, do odczytu wejcia korzysta z funkcji systemowej
mmap(2) zamiast domylnej read(2). W pewnych sytuacjach --mmap
daje lepsz wydajno. Moe jednak spowodowa niezdefiniowane
zachowanie (cznie ze zrzutem rdzenia) jeli podczas dziaania grep
plik wejciowy si skurczy lub wystpi bd wejcia/wyjcia.
-n, --line-number
Poprzedza kad lini wyjcia numerem linii z odpowiedniego pliku
wejciowego.
-q, --quiet, --silent
Po cichu; wycza normalne wyjcie. Przeszukiwanie zakoczy si na
pierwszej pasujcej linii. Zobacz take poniej opcje -s lub --no-
messages.
-r, --recursive
Czyta wszystkie pliki pod kadym katalogiem, rekurencyjnie; jest
to rwnowane opcji -d recurse.
-s, --no-messages
Wycza komunikaty bdw o plikach nieistniejcych lub nie do odczy-
tania. Uwaga o przenonoci: w przeciwiestwie do GNU grep, trady-
cyjny grep nie by zgodny z POSIX.2, gdy brakowao mu opcji -q a
opcja -s zachowywaa si jak opcja -q z GNU grep. Skrypty powoki,
ktre maj by przenone na tradycyjny grep powinny unika zarwno -q,
jak i -s i zamiast tego przekierowywa wyjcie do /dev/null.
-U, --binary
Traktuje plik jako binarny. Domylnie, w DOS-ie i MS Windows,
grep zgaduje typ pliku spogldajc na zawarto pierwszych 32 kB
przeczytanych z pliku. Jeli zdecyduje, e plik jest tekstowy,
udziera znaki CR z oryginalnej zawartoci pliku (po to eby wyrae-
nia regularne z ^ i $ dziaay poprawnie). Podanie -U wycza to
zgadywanie, powodujc, e wszystkie pliki s czytane i przekazywane
mechanizmowi dopasowywujcemu dosownie; jeli plik jest plikiem
tekstowym z parami CR/LF na kocu linii, spowoduje to, e niektre
wyraenia regularne nie zadziaaj. Opcja ta nie dziaa na platfor-
mach innych ni MS-DOS i MS Windows.
-u, --unix-byte-offsets
Raportuje offsety bajtowe w stylu Unixowym. Przecznik ten
powoduje, e grep raportuje offsety bajtowe tak, jakby plik by
plikiem tekstowym typu Uniksowego, tj. z udartymi znakami CR.
Da to rezultaty identyczne jak uruchomienie grepa na maszynie
Uniksowej. Opcja ta nie wywouje adnego efektu, chyba e uyto
take opcji -b; nie dziaa na platformach innych ni MS-DOS i MS
Windows.
-V, --version
Wypisuje numer wersji grepa na standardowe wyjcie bdw. w numer
wersji powinno si zacza we wszystkich zgoszeniach bdw (patrz
niej).
-v, --invert-match
Odwraca sens dopasowania, wybiera linie niepasujce.
-w, --word-regexp
Wybiera tylko te linie, w ktrych dopasowania wzorca tworz cae
sowa. Przeprowadzany test polega na tym, e dopasowywany podcig
musi albo znajdowa si na pocztku linii, albo by poprzedzony
znakiem nie tworzcym sowa. Podobnie, musi albo znajdowa si na
kocu linii, albo musi nastpowa po nim znak nie tworzcy sowa.
Znakami tworzcymi sowa s litery, cyfry i znak podkrelenia.
-x, --line-regexp
Wybiera tylko te dopasowania, ktre dokadnie pasuj do caej linii.
-y Przestarzay synonim -i.
-Z, --null
Zamiast znaku, ktry normalnie wystpuje po nazwie pliku wypisuje
bajt zerowy ( ASCII NUL). Na przykad, grep -lZ wypisuje po
nazwie pliku bajt zerowy, zamiast, jak zwykle, znaku nowej
linii. Opcja ta powoduje, e wyjcie jest jednoznaczne, nawet
przy nazwach plikw zawierajcych niecodzienne znaki, jak znak
nowej linii. Moe by wykorzystywana z poleceniami typu: find
-print0, perl -0, sort -z czy xargs -0, umoliwiajc przetwarzanie
plikw o dowolych nazwach, nawet zawierajcych znaki nowej linii.
Wyraenie regularne to wzorzec opisujcy zbir acuchw. Wyraenia regularne
s zbudowane analogicznie do wyrae arytmetycznych, przez zastosowanie do
poczenia mniejszych wyrae rozmaitych operatorw.
grep rozumie dwie rne wersje skadni wyrae regularnych: "podstawow" i
"rozszerzon". W GNU.B grep obie te skadnie przy uyciu nie rni si
zakresem dostpnych moliwoci. W innych implementacjach podstawowe
wyraenia regularne s mniej rozbudowane. Poniszy opis stosuje si do
rozszerzonych wyrae regularnych; rnice w stosunku do wyrae podstawowych
podsumowano na kocu.
Fundamentalnymi "cegiekami" s wyraenia regularne pasujce do poje-
dynczego znaku. Wikszo znakw, w tym wszystkie litery i cyfry, to
wyraenia regularne pasujce do samych siebie. Kady metaznak majcy spec-
jalne znaczenie moe by cytowany przez poprzedzenie go odwrotnym
ukonikiem.
Lista znakw zawarta midzy [ a ] pasuje do kadego pojedynczego znaku na
tej licie; jeli pierwszym znakiem listy jest daszek ^, pasuje wtedy ona
do kadego znaku nie znajdujcego si na licie. Dla przykadu, wyraenie
regularne [0123456789] pasuje do kadej pojedynczej cyfry. Zakres znakw
ASCII poda mona okrelajc znak pierwszy i ostatni, oddzielone mylnikiem.
I na koniec: predefiniowano pewne nazwane klasy znakw. Ich nazwy mwi
same za siebie, i s to: [:alnum:], [:alpha:], [:cntrl:], [:digit:],
[:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:] oraz
[:xdigit:]. Na przykad [[:alnum:]] oznacza [0-9A-Za-z], z tym
wyjtkiem, e ta druga forma zaley od kodowania znakw ASCII i ustawie
regionalnych POSIX (locale), podczas gdy pierwsza jest przenona.
(Zauwa, e nawiasy kwadratowe w nazwach klas s czci nazw symbolicznych i
musz by umieszczone dodatkowo, oprcz pary nawiasw ograniczajcej sam
list). Wikszo metaznakw traci swoje szczeglne znaczenie wewntrz list.
Aby umieci tam dosowny ], umie go jako pierwszy na licie. Podobnie,
aby umieci dosowny ^, umie go gdziekolwiek poza pierwszym miejscem. W
kocu, aby umieci dosowny -, umie go na ostatku.
Kropka . pasuje do kadego pojedynczego znaku. Symbol \w to synonim
[[:alnum:]] a \W to synonim [^[:alnum]].
Daszek ^ oraz znak dolara $ s metaznakami, ktre pasuj odpowiednio do
acucha pustego na pocztku i na kocu linii. Symbole \< oraz \> pasuj
odpowiednio do acucha pustego na pocztku i na kocu sowa. Symbol \b
pasuje do acucha pustego na krawdzi sowa, za \B pasuje do pustego
acucha zakadajc, e nie jest on na krawdzi sowa.
Po wyraeniu regularnym moe nastpowa jeden z kilku operatorw powtrzenia:
? Poprzedzajcy element jest opcjonalny i pasuje nie wicej ni raz.
* Poprzedzajcy element bdzie dopasowany zero lub wicej razy.
+ Poprzedzajcy element bdzie dopasowany jeden lub wicej razy.
{n} Poprzedzajcy element pasuje dokadnie n razy.
{n,} Poprzedzajcy element pasuje n lub wicej razy.
{,m} Poprzedzajcy element jest opcjonalny i pasuje co najwyej m razy.
{n,m} Poprzedzajcy element pasuje co najmniej n razy, ale nie wicej ni
m razy.
Dwa wyraenia regularne mona ze sob zczy (skonkatenowa); do wynikowego
wyraenia regularnego pasuje kady cig utworzony przez zczenie dowolnych
dwch cigw, ktre odpowiednio pasuj do zczonych podwyrae.
Dwa wyraenia regularne mona poczy operatorem infiksowym (wrostkowym) |;
do wynikowego wyraenia regularnego pasuje dowolny cig pasujcy do jed-
nego bd do drugiego z podwyrae.
Powtarzanie ma priorytet nad czeniem, ktre z kolei bierze gr nad alter-
natyw. Cae wyraenie regularne mona uj w nawiasy, celem uniewanienia
tych regu priorytetowych.
Wsteczne odniesienie \n, gdzie n jest pojedyncz cyfr, dopasowuje podcig
poprzednio dopasowany n-tym ujtym w nawiasy podwyraeniem wyraenia regu-
larnego.
W podstawowych wyraeniach regularnych metaznaki ?, +, {, |, ( oraz )
trac swoje szczeglne znaczenie; zamiast nich naley uy wersji z odwrot-
nym ukonikiem: \?, \+, \{, \|, \( oraz \).
Tradycyjny egrep nie traktuje { jako metaznaku. Niektre implementacje
udostpniaj zamiast niego \{, wic przenone skrypty powinny unika { we
wzorcach egrep, a do dopasowywania dosownego znaku { stosowa [{].
GNU egrep usiuje obsugiwa tradycyjny sposb uycia zakadajc, e { nie
posiada szczeglnego znaczenia jeli byby on pocztkiem nieprawidowego
okrelenia liczby powtrze. Na przykad, polecenie powoki egrep '{1' szuka
dwuznakowego acucha {1, zamiast zgasza bd skadni w wyraeniu regularnym.
POSIX.2 pozwala na takie zachowanie jako rozszerzenie standardu, ale
przenone skrypty powinny go unika.
GREP_OPTIONS
Ta zmienna okrela domylne opcje, jakie zostan umieszczone przed
wszystkimi opcjami podanymi wprost. Na przykad, jeli
GREP_OPTIONS jest rwne '--binary-files=without-match --directo-
ries=skip', to grep zachowa si tak, jakby podano --binary-
files=without-match i --directories=skip przed ewentualnymi
jawnymi opcjami. Okrelenia opcji oddziela si biaymi znakami.
Odwrotny ukonik cytuje nastpny znak, zatem mona go wykorzysta do
podania opcji zawierajcej biay znak lub odwrotny ukonik.
LC_ALL, LC_MESSAGES, LANG
Te zmienne podaj ustawienie regionalne (locale) LC_MESSAGES,
okrelajce jzyk, jakiego grep ma uy w komunikatach. Ustawienie
locale jest okrelane przez pierwsz z tych zmiennych, ktra ma
nadan warto. Jeli nie istnieje adna z nich, to stosowana jest
amerykaska odmiana angielskiego. Dzieje si tak rwnie w przy-
padku, gdy nie zainstalowano katalogu z komunikatami lub jeli
grep nie zosta skompilowany z obsug jzykw narodowych (NLS).
LC_ALL, LC_CTYPE, LANG
Te zmienne podaj ustawienie regionalne (locale) LC_CTYPE okrela-
jce typ znakw, np. ktre z nich s biaymi znakami. Ustawienie
locale jest okrelane przez pierwsz z tych zmiennych, ktra ma
nadan warto. Jeli nie istnieje adna z nich, to stosowane jest
ustawienie POSIX. Dzieje si tak rwnie w przypadku, gdy nie
zainstalowano katalogu z komunikatami lub jeli grep nie zosta
skompilowany z obsug jzykw narodowych (NLS).
POSIXLY_CORRECT
Jeli jest ustawiona, to grep zachowuje si zgodnie z wymaganiami
POSIX.2; w przeciwnym razie grep zachowuje si bardziej jak inne
programy GNU. POSIX.2 da, by opcje, ktre wystpuj po nazwach
plikw byy traktowane jak nazwy plikw. Domylnie za, opcje takie s
przesuwane na pocztek listy argumentw i traktowane jak opcje.
Ponadto, POSIX.2 wymaga, by nierozpoznane opcje byy zgaszane
jako "nielegalne" ("illegal"), ale poniewa tak naprawd nie
naruszaj one prawa, domylnie zgaszane s jako "nieprawidowe"
("invalid"). POSIXLY_CORRECT wycza take _N_GNU_nonop-
tion_argv_flags_, opisane poniej.
_N_GNU_nonoption_argv_flags_
(Tu N jest numerycznym identyfikatorem procesu grepa). Jeli i-
tym znakiem wartoci tej zmiennej rodowiska jest 1, to i-ty argu-
ment przekazany do grep nie jest uwaany za opcj, nawet jeli na
ni wyglda. Powoka moe umieci t zmienn w rodowisku dla kadego
polecenia, jakie uruchamia, podajc, ktre argumenty s wynikiem
rozwinicia nazw plikw i std nie powinny by traktowane jako
opcje. Zachowanie to jest dostpne tylko z bibliotek GNU C i
tylko wtedy gdy nie ustawiono POSIXLY_CORRECT.
Normalnie status zakoczenia rwna si 0 jeli znaleziono dopasowania, a 1
jeli nie znaleziono adnych. Opcja -v odwraca sens statusu zakoczenia.
Status zakoczenia rwna si 2 jeli wystpiy bdy skadniowe we wzorcu,
niedostpne pliki wejciowe lub inne bdy systemowe.
Zgoszenia bdw wysyaj, prosz, do bug-gnu-utils [AT] gnu.org. Upewnij si, e
gdzie w polu tematu ("Subject:") umiecie sowo "grep".
Due liczniki powtrze w konstrukcji {m,n} mog spowodowa, e grep zuyje
mnstwo pamici. Oprcz tego, pewne inne niejasne wyraenia regularne
wymagaj czasu i przestrzeni rosncej wykadniczo i mog spowodowa, e gre-
powi zabraknie pamici.
Wsteczne odwoania s bardzo powolne i mog wymaga czasu rosncego wykad-
niczo.
Projekt GNU 2001/01/17 GREP(1)