fgrep

GREP(1)                     General Commands Manual                    GREP(1)



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 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.



Projekt GNU                       2001/01/17                           GREP(1)