grep(1)                                                   grep(1)


OPIS
       grep, egrep, fgrep - wypisz linie pasujące do wzorca

SKŁADNIA
       grep  [-[AB]  NUM]  [-CEFGVbchiLlnqsvwxyUu]  [-e WZÓR | -f
       PLIK] [--extended-regexp] [--fixed-strings]  [--basic-reg­
       exp]    [--regexp=WZÓR]    [--file=PLIK]   [--ignore-case]
       [--word-regexp] [--line-regexp] [--line-regexp] [--no-mes­
       sages]  [--revert-match] [--version] [--help] [--byte-off­
       set]  [--line-number]  [--with-filename]   [--no-filename]
       [--quiet]   [--silent]  [--files-without-match]  [--files-
       with-matcces] [--count]  [--before-context=NUM]  [--after-
       context=NUM]  [--context] [--binary] [--unix-byte-offsets]
       pliki...

OPIS
       grep przeszukuje nazwane 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  wzoru.  Domyślnie, grep wypisuje linie pasujące.

       Istnieją trzy główne warianty  grepa,  kontrolowane  przez
       następujące opcje:
       -G, --basic-regexp
              Interpretuj  wzór  jako  podstawowe wyrażenie regu­
              larne (zobacz niżej).  Jest to zachowanie domyślne.
       -E, --extended-regexp
              Interpretuj  wzór  jako rozszerzone wyrażenie regu­
              larne (patrz niżej).
       -F, --fixed-strings
              Interpretuj wzór  jako  listę  łańcuchów  o  stałej
              długości,  oddzielonych  znakami nowej linii, które
              należy dopasować każdy z osobna.
       Dodatkowo dostępne są  dwa  programy  wariantowe  egrep  i
       fgrep.    egrep  jest  podobny  (ale  nie  identyczny)  do
       grep -E,  i  jest  kompatybilny   z   historycznym   egrep
       Unixowym.  Fgrep jest tym samym co grep -F.

       Wszystkie warianty grepa rozumieją następujące opcje:
       -NUM   Pasujące   linie   zostaną  wypisane  z  NUM  linii
              poprzedzającego i  następującego  kontekstu.   grep
              jednak  nie  wypisze  żadnej linii więcej niż jeden
              raz.
       -A NUM, --after-context=NUM
              Wypisz  NUM  linii   następującego   kontekstu   po
              pasujących liniach.
       -B NUM, --before-context=NUM
              Wypisz  NUM  linii  poprzedzającego kontekstu przed
              pasującymi liniami.
       -C, --context
              Równoważne -2.
       -V, --version
              Wypisz numer wersji grepa na standardowy błąd.   Ów
              numer   wersji   powinien   zostać   załączony   do



GNU Project              26 wrzesień 1998                       1





grep(1)                                                   grep(1)


              wszystkich raportów o błędach (patrz niżej).
       -b, --byte-offset
              Wypisz offset  bajtowy  w  pliku  wejściowym  przed
              każdą linią wyjścia.
       -c, --count
              Wyłącz  normalne  wyjście;  zamiast  niego  wypisuj
              liczbę   pasujących   linii   dla   każdego   pliku
              wejściowego.   Z  opcją  -v,  --revert-match (patrz
              niżej), policz linie niepasujące.
       -e WZÓR, --regexp=WZÓR
              Użyj WZÓR  jako  wzoru;  użyteczne  do  ochronienia
              wzorów zaczynających się od -.
       -f PLIK, --file=PLIK
              Pobierz  wzory  z  PLIK,  po jednym z każdej linii.
              Plik pusty zawiera  zero  wzorów,  nie  pasując  do
              niczego.
       -h, --no-filename
              Wyłącz  prefiksowanie nazw plików w wyjściu podczas
              przeszukiwania wielu plików.
       -i, --ignore-case
              Ignoruj rożróżnienia w wielkości liter we wzór oraz
              w plikach wejściowych.
       -L, --files-without-match
              Wyłącz normalne wyjście; zamiast niego wypisz 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łącz normalne wyjście; zamiast niego wypisz nazwę
              każdego  pliku  z  którego  normalnie  wypisano  by
              jakieś wyjście.   Przeszukiwanie  zakończy  się  na
              pierwszej pasującej linii.
       -n, --line-number
              Poprzedź   każda  linię  wyjścia  numerem  linii  w
              odpowiednim pliku wejściowym.
       -q, --quiet
              Po cichu; wyłącz normalne wyjście.   Przeszukiwanie
              zakończy się na pierwszej pasującej linii.
       -s, --silent
              Wyłącz  komunikaty błędów o plikach nieistniejących
              lub nie do odczytania.
       -v, --revert-match
              Odwróc  sens  dopasowania,  wybieraj  linie  niepa­
              sujące.
       -w, --word-regexp
              Wybieraj  tylko  te  linie  które  zawierają  wzory
              tworzące całe słowa.  Test przeprowadzany 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.




GNU Project              26 wrzesień 1998                       2





grep(1)                                                   grep(1)


       -x, --line-regexp
              Wybierz tylko te dopasowania które dokładnie pasują
              do całej linii.
       -y     Przestarzały synonim -i.
       -U, --binary
              Potraktuj  plik jako binarny.  Domyślnie, w DOSie i
              MS Windows, grep zgaduje typ pliku  spoglądając  na
              zawartość  pierwszych  32 kB przeczytanych z pliku.
              Jeśli grep zdecyduje że plik jest tekstem,  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 mechaniz­
              mowi  dopasowywującemu  jak  leci;  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 jest dostępna tylko w DOSie i
              MS Windows.
       -u, --unix-byte-offsets
              Raportuj   offsety   bajtowe   w   stylu  Unixowym.
              Przełącznik ten powoduje żę grep raportuje  offsety
              bajtowe  tak  jakby  plik  był  plikiem tekstowym w
              stylu Unixowym, tj. z udartymi znakami CR.   Da  to
              rezultaty   identyczne  z  uruchamianiem  grepa  na
              maszynie Unixowej.  Opcja ta nie  wywołuje  żadnego
              efektu,  chyba  że  użyto  także opcji -b; dostępna
              jest ona tylko w DOSie i MS Windows.

WYRAŻENIA REGULARNE
       Wyrażenie regularne to  wzór  opisujący  zbiór  łańcuchów.
       Wyrażenia  regularne  są zbudowane analogicznie do wyrażeń
       arytmetycznych, używając różnych operatorów do  połączenia
       mniejszych wyrażeń.

       grep  rozumie  dwie  różne  wersje  składni  wyrażeń regu­
       larnych: "podstawową" i "złożoną".   W  GNU grep,  nie  ma
       różnicy w dostępnej funkcjonalności kiedy używa się jednej
       ze składni.  W innych implementacjach podstawowe wyrażenia
       regularne  są  mniej wszechstronne.  Poniższy opis stosuje
       się do rozszerzonych wyrażeń regularnych; różnice  w  sto­
       sunku do wyrażeń bazowych podsumowano na końcu.

       Fundamentalne  "cegiełki"  to 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 backslashem.

       Lista  znaków  zwarta między [ a ] pasuje do każdego poje­
       dynczego 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 reg­
       ularne  [0123456789]  pasuje  do każdej pojedynczej cyfry.
       Zakres znaków ASCII podać można określając znak pierwszy i



GNU Project              26 wrzesień 1998                       3





grep(1)                                                   grep(1)


       ostatni,  oddzielone myślnikiem.  Niektóre w końcu nazwane
       klasy znaków są predefiniowane.  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, podczas gdy
       format jest przenośny (zauważ że nawiasy  w  tych  nazwach
       klas są częścią nazw symbolicznych, i muszą być załączone,
       razem z  nawiasami  ograniczającymi  listę  w  nawiasach).
       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 co
              najmniej 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 do  siebie  dodać;  wynikowe
       wyrażenie  regularne  pasuje  do każdego ciągu utworzonego
       poprzez dodanie dowolnych dwóch ciągów  które  odpowiednio
       pasują do dodanych podwyrażeń.

       Dwa  wyrażenia  regularne można połączyć operatorem infik­
       sowym |; wynikowe wyrażenie regularne pasuje do  dowolnego
       ciągu pasującego do jednego z podwyrażeń.

       Powtarzanie bierze priorytet nad dodawaniem, które z kolei
       bierze górę nad przemiennością.  Całe wyrażenie  regularne
       można  ująć  w  nawiasy,  celem  unieważnienia  tych reguł



GNU Project              26 wrzesień 1998                       4





grep(1)                                                   grep(1)


       priorytetowych.

       Wsteczne odniesienie \n, gdzie n  jest  pojedynczą  cyfrą,
       pasuje do podciągu poprzednio pasującego do n-tego ujętego
       w nawiasy podwyrażenia wyrażenia regularnego.

       W podstawowych wyrażeniach regularnych metaznaki ?, +,  {,
       |,  (,  oraz  )  tracą swoje szczególne znaczenie; zamiast
       nich użyj wersji z backslashem: \?, \+, \{, \|,  \(,  oraz
       \).

       W  egrepie  metaznak  {  traci swoje szczególne znaczenie;
       użyj zamiast niego \{.

DIAGNOSTYKA
       Normalnie status wyjściowy równa się  0  jeśli  znaleziono
       dopasowania,  i  1 jeśli nie znaleziono żadnych.  Opcja -v
       odwraca sens statusu wyjściowego.  Status wyjściowy  równa
       się   2   jeśli  wystąpiły  błędy  składniowe  we  wzorze,
       niedostępne pliki wejściowe lub inne błędy systemowe.

BŁĘDY
       Emailuj  raporty  o  błędach   do   bug-gnu-utils@gnu.org.
       Upewnij się że umieściłeś słowo "grep" gdzieś w polu "Sub­
       ject:"

       Duże  liczniki  powtórzeń   w   konstrukcji   {m,n}   mogą
       spowodować  że  grep  zużyje  mnóstwo pamięci.  Dodatkowo,
       pewne inne niejasne wyrażenia regularne wymagają  czasu  i
       przestrzeni  rosnącej  wykładnikowo,  i mogą spowodować że
       grepowi zabraknie pamięci.

       Wsteczne odwołania są bardzo powolne, i mogą wymagać czasu
       rosnącego wykładnikowo.























GNU Project              26 wrzesień 1998                       5