grep

Autres langues

Langue: pl

Autres versions - même langue

Version: \*(Dt (openSuse - 09/10/07)

Section: 1 (Commandes utilisateur)

NAZWA

grep, egrep, fgrep - wypisz linie pasuj±ce do wzorca

SK£ADNIA

grep [opcje] wzorzec [plik...]
grep [opcje] [-e wzorzec | -f plik] [plik...]

OPIS

grep przeszukuje wskazane pliki wej¶ciowe (lub standardowe wej¶cie je¶li nie podano ¿adnych lub podano nazwê pliku '-'), szukaj±c linii zawieraj±cych co¶ pasuj±cego do podanego wzorca. Domy¶lnie, grep wypisuje pasuj±ce linie.

Dodatkowo dostêpne s± dwa programy wariantowe egrep i fgrep. Egrep jest tym samym, co grep -E. Fgrep jest tym samym, co grep -F.

OPCJE

-A num, --after-context=num
Wypisuje po pasuj±cych liniach num linii nastêpuj±cego kontekstu.
-a, --text
Przetwarza plik binarny tak, jakby by³ on tekstowy; jest to równowa¿nik opcji --binary-fnums=text.
-B num, --before-context=num
Wypisuje przed pasuj±cymi liniami num linii poprzedzaj±cego kontekstu.
-C [num], -num, --context[=num]
Wypisuje num linii (domy¶lnie 2) kontekstu w wyj¶ciu.
-b, --byte-offset
Wypisuje przed ka¿d± lini± wyj¶cia jej offset bajtowy w pliku wej¶ciowym.
--binary-files=typ
Je¶li pierwszych kilka bajtów pliku wskazuje, ¿e zawiera on dane binarne, to zak³adane jest, ¿e jest to plik typu typ. Domy¶lnym typem jest binarny (binary), a grep normalnie albo wypisuje jednolinijkowy komunikat mówi±cy o dopasowaniu pliku binarnego, albo nie wypisuje komunikatu, gdy nie znaleziono dopasowania. Je¿eli typem jest without-match (bez dopasowania), to grep zak³ada, ¿e ten plik binarny nie pasuje; jest to równowa¿ne dzia³aniu opcji -I. Je¶li typem jest text, to grep przetwarza plik binarny tak, jakby by³ on tekstowy; jest to równowa¿ne opcji -a. Ostrze¿enie: Mo¿e siê zdarzyæ, ¿e wypisane przez grep --binary-files=text ¶miecie binarne dadz± przykre skutki uboczne je¿eli wyj¶ciem bêdzie terminal a jego sterownik zinterpretuje niektóre z nich jako swoje polecenia.
-c, --count
Wy³±cza normalne wyj¶cie; zamiast niego dla ka¿dego pliku wej¶ciowego wypisuje liczbê pasuj±cych linii. Z opcj± -v, --invert-match (patrz ni¿ej), liczy linie niepasuj±ce.
-d akcja, --directories=akcja
Je¶li plik wej¶ciowy jest katalogiem, stosuje to jego przetworzenia akcjê. Domy¶ln± akcj± jest read, co znaczy, ¿e katalogi s± czytane dok³adnie tak samo, jakby by³y zwyk³ymi plikami. Je¶li warto¶ci± akcji jest skip, to katalogi s± milcz±co pomijane. Je¶li warto¶ci± akcji jest recurse, to grep czyta wszystkie pliki pod ka¿dym katalogiem, rekurencyjnie; jest to równowa¿ne opcji -r.
-E, --extended-regexp
Interpretuje wzorzec jako rozszerzone wyra¿enie regularne (patrz ni¿ej).
-e wzorzec, --regexp=wzorzec
U¿ywa wzorca jako wzorca; u¿yteczne do ochronienia wzorów zaczynaj±cych siê od -.
-F, --fixed-strings
Interpretuje wzorzec jako listê ³añcuchów o sta³ej d³ugo¶ci, oddzielonych znakami nowej linii, które nale¿y dopasowaæ ka¿dy z osobna.
-f plik, --file=plik
Pobiera wzorce z plik, po jednym z ka¿dej linii. Plik pusty zawiera zero wzorców, nie pasuj±c do niczego.
-G, --basic-regexp
Interpretuje wzorzec jako podstawowe wyra¿enie regularne (zobacz ni¿ej). Jest to zachowanie domy¶lne.
-H, --with-filename
Dla ka¿dego dopasowania wypisuje nazwê pliku.
-h, --no-filename
-h, --no-filename Wy³±cza poprzedzanie wyników nazwami plików podczas przeszukiwania wielu plików.
--help
Wypisuje krótki tekst pomocy.
-I
Przetwarza plik binarny tak, jakby nie zawiera³ on pasuj±cych danych; jest to równowa¿ne opcji --binary-files=without-match.
-i, --ignore-case
Ignoruje rozró¿nienia w wielko¶ci liter we wzorcu oraz w plikach wej¶ciowych.
-L, --files-without-match
Wy³±cza normalne wyj¶cie; zamiast niego wypisuje nazwê ka¿dego pliku, z którego normalnie nie wypisano by ¿adnego wyj¶cia. Przeszukiwanie zakoñczy siê na pierwszej pasuj±cej linii.
-l, --files-with-matches
Wy³±cza normalne wyj¶cie; zamiast niego wypisuje nazwê ka¿dego pliku, z którego normalnie wypisano by jakie¶ wyj¶cie. Przeszukiwanie zakoñczy siê na pierwszej pasuj±cej linii.
--mmap
Je¶li to mo¿liwe, do odczytu wej¶cia korzysta z funkcji systemowej mmap(2) zamiast domy¶lnej read(2). W pewnych sytuacjach --mmap daje lepsz± wydajno¶æ. Mo¿e jednak spowodowaæ niezdefiniowane zachowanie (³±cznie ze zrzutem rdzenia) je¶li podczas dzia³ania grep plik wej¶ciowy siê skurczy lub wyst±pi b³±d wej¶cia/wyj¶cia.
-n, --line-number
Poprzedza ka¿d± liniê wyj¶cia numerem linii z odpowiedniego pliku wej¶ciowego.
-q, --quiet, --silent
Po cichu; wy³±cza normalne wyj¶cie. Przeszukiwanie zakoñczy siê na pierwszej pasuj±cej linii. Zobacz tak¿e poni¿ej opcje -s lub --no-messages.
-r, --recursive
Czyta wszystkie pliki pod ka¿dym katalogiem, rekurencyjnie; jest to równowa¿ne opcji -d recurse.
-s, --no-messages
Wy³±cza komunikaty b³êdów o plikach nieistniej±cych lub nie do odczytania. Uwaga o przeno¶no¶ci: w przeciwieñstwie do GNU grep, tradycyjny grep nie by³ zgodny z POSIX.2, gdy¿ brakowa³o mu opcji -q a opcja -s zachowywa³a siê jak opcja -q z GNU grep. Skrypty pow³oki, które maj± byæ przeno¶ne na tradycyjny grep powinny unikaæ zarówno -q, jak i -s i zamiast tego przekierowywaæ wyj¶cie do /dev/null.
-U, --binary
Traktuje plik jako binarny. Domy¶lnie, w DOS-ie i MS Windows, grep zgaduje typ pliku spogl±daj±c na zawarto¶æ pierwszych 32 kB przeczytanych z pliku. Je¶li zdecyduje, ¿e plik jest tekstowy, udziera znaki CR z oryginalnej zawarto¶ci pliku (po to ¿eby wyra¿enia regularne z ^ i $ dzia³a³y poprawnie). Podanie -U wy³±cza to zgadywanie, powoduj±c, ¿e wszystkie pliki s± czytane i przekazywane mechanizmowi dopasowywuj±cemu dos³ownie; je¶li plik jest plikiem tekstowym z parami CR/LF na koñcu linii, spowoduje to, ¿e niektóre wyra¿enia regularne nie zadzia³aj±. Opcja ta nie dzia³a na platformach innych ni¿ MS-DOS i MS Windows.
-u, --unix-byte-offsets
Raportuje offsety bajtowe w stylu Unixowym. Prze³±cznik 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 wywo³uje ¿adnego efektu, chyba ¿e u¿yto tak¿e opcji -b; nie dzia³a na platformach innych ni¿ MS-DOS i MS Windows.
-V, --version
Wypisuje numer wersji grepa na standardowe wyj¶cie b³êdów. Ów numer wersji powinno siê za³±czaæ we wszystkich zg³oszeniach b³êdów (patrz ni¿ej).
-v, --invert-match
Odwraca sens dopasowania, wybiera linie niepasuj±ce.
-w, --word-regexp
Wybiera tylko te linie, w których dopasowania wzorca tworz± ca³e s³owa. Przeprowadzany test polega na tym, ¿e dopasowywany podci±g musi albo znajdowaæ siê na pocz±tku linii, albo byæ poprzedzony znakiem nie tworz±cym s³owa. Podobnie, musi albo znajdowaæ siê na koñcu linii, albo musi nastêpowaæ po nim znak nie tworz±cy s³owa. Znakami tworz±cymi s³owa s± litery, cyfry i znak podkre¶lenia.
-x, --line-regexp
Wybiera tylko te dopasowania, które dok³adnie pasuj± do ca³ej linii.
-y
Przestarza³y synonim -i.
-Z, --null
Zamiast znaku, który normalnie wystêpuje po nazwie pliku wypisuje bajt zerowy ( ASCII NUL). Na przyk³ad, grep -lZ wypisuje po nazwie pliku bajt zerowy, zamiast, jak zwykle, znaku nowej linii. Opcja ta powoduje, ¿e wyj¶cie jest jednoznaczne, nawet przy nazwach plików zawieraj±cych niecodzienne znaki, jak znak nowej linii. Mo¿e byæ wykorzystywana z poleceniami typu: find -print0, perl -0, sort -z czy xargs -0, umo¿liwiaj±c przetwarzanie plików o dowolych nazwach, nawet zawieraj±cych znaki nowej linii.

WYRA¯ENIA REGULARNE

Wyra¿enie regularne to wzorzec opisuj±cy zbiór ³añcuchów. Wyra¿enia regularne s± zbudowane analogicznie do wyra¿eñ arytmetycznych, przez zastosowanie do po³±czenia mniejszych wyra¿eñ rozmaitych operatorów.

grep rozumie dwie ró¿ne wersje sk³adni wyra¿eñ regularnych: "podstawow±" i "rozszerzon±". W GNUgrep obie te sk³adnie przy u¿yciu nie ró¿ni± siê zakresem dostêpnych mo¿liwo¶ci. W innych implementacjach podstawowe wyra¿enia regularne s± mniej rozbudowane. Poni¿szy opis stosuje siê do rozszerzonych wyra¿eñ regularnych; ró¿nice w stosunku do wyra¿eñ podstawowych podsumowano na koñcu.

Fundamentalnymi "cegie³kami" s± wyra¿enia regularne pasuj±ce do pojedynczego znaku. Wiêkszo¶æ znaków, w tym wszystkie litery i cyfry, to wyra¿enia regularne pasuj±ce do samych siebie. Ka¿dy metaznak maj±cy specjalne znaczenie mo¿e byæ cytowany przez poprzedzenie go odwrotnym uko¶nikiem.

Lista znaków zawarta miêdzy [ a ] pasuje do ka¿dego pojedynczego znaku na tej li¶cie; je¶li pierwszym znakiem listy jest daszek ^, pasuje wtedy ona do ka¿dego znaku nie znajduj±cego siê na li¶cie. Dla przyk³adu, wyra¿enie regularne [0123456789] pasuje do ka¿dej pojedynczej cyfry. Zakres znaków ASCII podaæ mo¿na okre¶laj±c znak pierwszy i ostatni, oddzielone my¶lnikiem. I na koniec: predefiniowano pewne nazwane klasy znaków. Ich nazwy mówi± same za siebie, i s± to: [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:] oraz [:xdigit:]. Na przyk³ad [[:alnum:]] oznacza [0-9A-Za-z], z tym wyj±tkiem, ¿e ta druga forma zale¿y od kodowania znaków ASCII i ustawieñ regionalnych POSIX (locale), podczas gdy pierwsza jest przeno¶na. (Zauwa¿, ¿e nawiasy kwadratowe w nazwach klas s± czê¶ci± nazw symbolicznych i musz± byæ umieszczone dodatkowo, oprócz pary nawiasów ograniczaj±cej sam± listê). Wiêkszo¶æ metaznaków traci swoje szczególne znaczenie wewn±trz list. Aby umie¶ciæ tam dos³owny ], umie¶æ go jako pierwszy na li¶cie. Podobnie, aby umie¶ciæ dos³owny ^, umie¶æ go gdziekolwiek poza pierwszym miejscem. W koñcu, aby umie¶ciæ dos³owny -, umie¶æ go na ostatku.

Kropka . pasuje do ka¿dego pojedynczego znaku. Symbol \w to synonim [[:alnum:]] a \W to synonim [^[:alnum]].

Daszek ^ oraz znak dolara $ s± metaznakami, które pasuj± odpowiednio do ³añcucha pustego na pocz±tku i na koñcu linii. Symbole \< oraz \> pasuj± odpowiednio do ³añcucha pustego na pocz±tku i na koñcu s³owa. Symbol \b pasuje do ³añcucha pustego na krawêdzi s³owa, za¶ \B pasuje do pustego ³añcucha zak³adaj±c, ¿e nie jest on na krawêdzi s³owa.

Po wyra¿eniu regularnym mo¿e nastêpowaæ jeden z kilku operatorów powtórzenia:

?
Poprzedzaj±cy element jest opcjonalny i pasuje nie wiêcej ni¿ raz.
*
Poprzedzaj±cy element bêdzie dopasowany zero lub wiêcej razy.
+
Poprzedzaj±cy element bêdzie dopasowany jeden lub wiêcej razy.
{n}
Poprzedzaj±cy element pasuje dok³adnie n razy.
{n,}
Poprzedzaj±cy element pasuje n lub wiêcej razy.
{,m}
Poprzedzaj±cy element jest opcjonalny i pasuje co najwy¿ej m razy.
{n,m}
Poprzedzaj±cy element pasuje co najmniej n razy, ale nie wiêcej ni¿ m razy.

Dwa wyra¿enia regularne mo¿na ze sob± z³±czyæ (skonkatenowaæ); do wynikowego wyra¿enia regularnego pasuje ka¿dy ci±g utworzony przez z³±czenie dowolnych dwóch ci±gów, które odpowiednio pasuj± do z³±czonych podwyra¿eñ.

Dwa wyra¿enia regularne mo¿na po³±czyæ operatorem infiksowym (wrostkowym) |; do wynikowego wyra¿enia regularnego pasuje dowolny ci±g pasuj±cy do jednego b±d¼ do drugiego z podwyra¿eñ.

Powtarzanie ma priorytet nad ³±czeniem, które z kolei bierze górê nad alternatyw±. Ca³e wyra¿enie regularne mo¿na uj±æ w nawiasy, celem uniewa¿nienia tych regu³ priorytetowych.

Wsteczne odniesienie \n, gdzie n jest pojedyncz± cyfr±, dopasowuje podci±g poprzednio dopasowany n-tym ujêtym w nawiasy podwyra¿eniem wyra¿enia regularnego.

W podstawowych wyra¿eniach regularnych metaznaki ?, +, {, |, ( oraz ) trac± swoje szczególne znaczenie; zamiast nich nale¿y u¿yæ wersji z odwrotnym uko¶nikiem: \?, \+, \{, \|, \( oraz \).

Tradycyjny egrep nie traktuje { jako metaznaku. Niektóre implementacje udostêpniaj± zamiast niego \{, wiêc przeno¶ne skrypty powinny unikaæ { we wzorcach egrep, a do dopasowywania dos³ownego znaku { stosowaæ [{].

GNU egrep usi³uje obs³ugiwaæ tradycyjny sposób u¿ycia zak³adaj±c, ¿e { nie posiada szczególnego znaczenia je¶li by³by on pocz±tkiem nieprawid³owego okre¶lenia liczby powtórzeñ. Na przyk³ad, polecenie pow³oki egrep '{1' szuka dwuznakowego ³añcucha {1, zamiast zg³aszaæ b³±d sk³adni w wyra¿eniu regularnym. POSIX.2 pozwala na takie zachowanie jako rozszerzenie standardu, ale przeno¶ne skrypty powinny go unikaæ.

ZMIENNE ¦RODOWISKA

GREP_OPTIONS
Ta zmienna okre¶la domy¶lne opcje, jakie zostan± umieszczone przed wszystkimi opcjami podanymi wprost. Na przyk³ad, je¶li GREP_OPTIONS jest równe '--binary-files=without-match --directories=skip', to grep zachowa siê tak, jakby podano --binary-files=without-match i --directories=skip przed ewentualnymi jawnymi opcjami. Okre¶lenia opcji oddziela siê bia³ymi znakami. Odwrotny uko¶nik cytuje nastêpny znak, zatem mo¿na go wykorzystaæ do podania opcji zawieraj±cej bia³y znak lub odwrotny uko¶nik.
LC_ALL, LC_MESSAGES, LANG
Te zmienne podaj± ustawienie regionalne (locale) LC_MESSAGES, okre¶laj±ce jêzyk, jakiego grep ma u¿yæ w komunikatach. Ustawienie locale jest okre¶lane przez pierwsz± z tych zmiennych, która ma nadan± warto¶æ. Je¶li nie istnieje ¿adna z nich, to stosowana jest amerykañska odmiana angielskiego. Dzieje siê tak równie¿ w przypadku, gdy nie zainstalowano katalogu z komunikatami lub je¶li grep nie zosta³ skompilowany z obs³ug± jêzyków narodowych (NLS).
LC_ALL, LC_CTYPE, LANG
Te zmienne podaj± ustawienie regionalne (locale) LC_CTYPE okre¶laj±ce typ znaków, np. które z nich s± bia³ymi znakami. Ustawienie locale jest okre¶lane przez pierwsz± z tych zmiennych, która ma nadan± warto¶æ. Je¶li nie istnieje ¿adna z nich, to stosowane jest ustawienie POSIX. Dzieje siê tak równie¿ w przypadku, gdy nie zainstalowano katalogu z komunikatami lub je¶li grep nie zosta³ skompilowany z obs³ug± jêzyków narodowych (NLS).
POSIXLY_CORRECT
Je¶li 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, które wystêpuj± po nazwach plików by³y traktowane jak nazwy plików. Domy¶lnie za¶, opcje takie s± przesuwane na pocz±tek listy argumentów i traktowane jak opcje. Ponadto, POSIX.2 wymaga, by nierozpoznane opcje by³y zg³aszane jako "nielegalne" ("illegal"), ale poniewa¿ tak naprawdê nie naruszaj± one prawa, domy¶lnie zg³aszane s± jako "nieprawid³owe" ("invalid"). POSIXLY_CORRECT wy³±cza tak¿e _N_GNU_nonoption_argv_flags_, opisane poni¿ej.
_N_GNU_nonoption_argv_flags_
(Tu N jest numerycznym identyfikatorem procesu grepa). Je¶li i-tym znakiem warto¶ci tej zmiennej ¶rodowiska jest 1, to i-ty argument przekazany do grep nie jest uwa¿any za opcjê, nawet je¶li na ni± wygl±da. Pow³oka mo¿e umie¶ciæ tê zmienn± w ¶rodowisku dla ka¿dego polecenia, jakie uruchamia, podaj±c, które argumenty s± wynikiem rozwiniêcia nazw plików i st±d nie powinny byæ traktowane jako opcje. Zachowanie to jest dostêpne tylko z bibliotek± GNU C i tylko wtedy gdy nie ustawiono POSIXLY_CORRECT.

DIAGNOSTYKA

Normalnie status zakoñczenia równa siê 0 je¶li znaleziono dopasowania, a 1 je¶li nie znaleziono ¿adnych. Opcja -v odwraca sens statusu zakoñczenia. Status zakoñczenia równa siê 2 je¶li wyst±pi³y b³êdy sk³adniowe we wzorcu, niedostêpne pliki wej¶ciowe lub inne b³êdy systemowe.

B£ÊDY

Zg³oszenia b³êdów wysy³aj, proszê, do bug-gnu-utils@gnu.org. Upewnij siê, ¿e gdzie¶ w polu tematu ("Subject:") umie¶ci³e¶ s³owo "grep".

Du¿e liczniki powtórzeñ w konstrukcji {m,n} mog± spowodowaæ, ¿e grep zu¿yje mnóstwo pamiêci. Oprócz tego, pewne inne niejasne wyra¿enia regularne wymagaj± czasu i przestrzeni rosn±cej wyk³adniczo i mog± spowodowaæ, ¿e grepowi zabraknie pamiêci.

Wsteczne odwo³ania s± bardzo powolne i mog± wymagaæ czasu rosn±cego wyk³adniczo.