Provided by:
manpages-pl_20060617-1_all 
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. Ostrzeenie: 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 GNU.B grep 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.