GREP(1)

NAZWA
grep, egrep, fgrep, rgrep - wypisuje wiersze pasujące do wzorca

SKŁADNIA
grep [OPCJE] WZORZEC [PLIK...]
grep [OPCJE] [-e WZORZEC | -f PLIK] [PLIK...]

OPIS
Program grep przeszukuje wskazane PLIKI wejściowe (lub standardowe wejście, jeśli nie podano żadnych lub podano nazwę pliku pojedynczy minus (-) jako nazwę pliku) szukając wierszy zawierających coś pasującego do podanego WZORCA. Domyślnie, grep wypisuje pasujące wiersze.

Dodatkowo, dostępne są trzy programy wariantowe egrep, fgrep i rgrep. Program egrep jest odpowiednikiem grep -E, fgrep jest tym samym, co grep -F, a rgrep odpowiada grep -r. Bezpośrednie wywołanie egrep lub fgrep jest przestarzałe, ale jest zapewnione w celu zachowania zgodności ze starszymi programami.

OPCJE

  Standardowe informacje programu

--help
    Wypisuje krótkie podsumowanie poniższych opcji oraz adres do przesyłania informacji o błędach, po czym wychodzi.

-V, --version
    Wypisuje numer wersji grepa na standardowe wyjście. Ów numer wersji powinno się dołączać do wszystkich zgłoszeń błędów (patrz niżej).

  Wybór dopasowań

-E, --extended-regexp
    Interpretuje WZORZEC jako rozszerzone wyrażenie regularne - ERE, patrz niżej (-E jest określone normą POSIX).

-F, --fixed-strings
    Interpretuje WZORZEC jako listę ciągów (nie wzorców!), umieszczonych po jednym w każdym wierszu, z których dowolny ma zostać dopasowany (-F jest określone normą POSIX).

-G, --basic-regexp
    Interpretuje WZORZEC jako podstawowe wyrażenie regularna - BRE, patrz niżej. Jest to zachowanie domyślne.

-P, --perl-regexp
    Interpretuje WZORZEC jako wyrażenie regularne Perla - PCRE, patrz niżej. Jest to opcja wysoce eksperymentalna i grep -P może ostrzegać o jeszcze niewdrożonych funkcjach.

  Kontrola dopasowania

-e WZORZEC, --regexp=WZORZEC
    Używa WZORCA jako wzorca. Może to zostać użyte do podania wielu wzorców lub do chronienia wzorców rozpoczynających się minusem: - (-e jest określone normą POSIX).

-f PLIK, --file=PLIK
    Pobiera wzorce z PLIKU, po jednym z każdego wiersza. Plik pusty zawiera zero wzorców, nie pasując do niczego (-f jest określone normą POSIX).

-i, --ignore-case
    Ignoruje rozróżnianie wielkości znaków, zarówno we WZORCU, jak i w plikach wejściowych (-i jest określone normą POSIX).

-v, --invert-match
    Odwraca sens dopasowania, wybierając linie niepasujące (-v jest określone normą POSIX).

-w, --word-regexp
    Wybiera tylko te wiersze, w których dopasowane wzorce tworzą całe słowa. Przeprowadzany test polega na tym, że dopasowany podłańcuch musi albo znajdować się na początku wiersza, albo być poprzedzony znakiem nietworzącym słowa. Podobnie, musi albo znajdować się na końcu wiersza, albo musi następować po nim znak nietworzą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łego wiersza (-x jest określone normą POSIX).

-y  Przestarzały synonim -i.

  Ogólna kontrola wyniku

-c, --count
    Wyłącza normalne wyjście, zamiast niego, dla każdego pliku wejściowego, wypisuje liczbę pasujących wierszy. Z opcją -v, --invert-match (patrz niżej), liczy wiersze niepasujące (-c jest określone normą POSIX).

--color[=KIEDY], --colour[=KIEDY]
    Otacza pasujące (niepuste) łańcuchy, pasujące wiersze, wiersze kontekstu, nazwy plików, numery wierszy, offset bajtowy oraz separatory (dla pól i grup w wierszach kontekstu) znakami odpowiadającymi za wyświetlanie kolorów w terminalu. Kolory są zdefiniowane przez zmienną środowiskową GREP_COLORS. Przestarzała zmienna środowiskowa GREP_COLOR jest wciąż obsługiwana, ale jej ustawienia nie mają pierwszeństwa. Parametr KIEDY może przyjmować wartości: never, always i auto.

-L, --files-without-match
    Wyłącza normalne wyjście, zamiast niego wypisuje nazwę każdego pliku, z którego normalnie nie wypisano by żadnego wyniku. Przeszukiwanie zakończy się na pierwszym pasującym wyniku.

-l, --files-with-matches
    Wyłącza normalne wyjście, zamiast niego wypisuje nazwę każdego pliku, z którego wypisano by jakieś wyjście. Przeszukiwanie zakończy się na pierwszym pasującym wyniku (-l jest określone normą POSIX).

-m LICZBA, --max-count=LICZBA
    Zatrzymuje odczytywanie pliku po LICZBIE pasujących wierszy. Jeśli wejście jest standardowym wejściem ze zwykłego pliku, a LICZBA pasujących wierszy jest wyjściem, grep upewnia się przed zakończeniem działania, że standardowe wejście jest ustawione zaraz za ostatnim pasującym wierszem, niezależnie od obecności końcowych wierszy kontekstu. Umożliwia to wywołującemu procesowi wznowienie wyszukiwania. Jeśli grep zatrzyma się po LICZBIE pasujących wierszy, nie wyświetla końcowych wierszy kontekstu. Jeżeli podano także opcję -c lub --count, grep nie wyświetla liczby większej niż LICZBA. Jeśli podano również opcję -v lub --invert-match, to grep zatrzymuje wyświetlanie po wypisaniu LICZBY niepasujących wierszy.

-o, --only-matching
    Wyświetla tylko pasujące (niepuste) części pasującego wiersza, każda w osobnym wierszu.

-q, --quiet, --silent
    Po cichu, nie wyświetla niczego na standardowe wyjście. Przeszukiwanie zakończy się na pierwszym pasującym wierszu ze statusem zero, nawet jeśli wykryto błąd. Patrz również opcje -s lub --no-messages (-q jest określone normą POSIX).

-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, siódme wydanie uniksowego grepa nie jest zgodne z normą POSIX, ponieważ brakuje mu opcji -q, a opcja -s zachowuje się jak -q z GNU grep. Przenośne skrypty powłoki powinny unikać zarówno -q jak i -s i zamiast tego przekierowywać wyjście do /dev/null (-s jest określone normą POSIX).

  Kontrola przedrostków w wierszu wyjścia

-b, --byte-offset
    Wypisuje przed każdym wierszem wyjścia jego, liczony od 0, offset bajtowy w pliku wejściowym. Jeśli użyto opcji -o (--only-matching), wyświetla offset samej pasującej części.

-H, --with-filename
    Wyświetla nazwę pliku dla każdego dopasowania. Jest to domyślne ustawienia, jeśli jest więcej niż jeden plik do przeszukania.

-h, --no-filename
    Odwołuje poprzedzanie wyjścia nazwami plików. Jest to ustawienie domyślne, jeśli jest tylko jeden plik (lub standardowe wejście) do przeszukania.

--label=ETYKIETA
    Wyświetla wejście, które w rzeczywistości pochodzi ze standardowego wejścia, jako wejście pochodzące z pliku ETYKIETA. Jest to szczególnie przydatne w implementacji narzędzi takich jak zgrep np. gzip -cd foo.gz | grep --label=foo -H coś. Patrz też: opcja -H.

-n, --line-number
    Poprzedza każdy wiersz wyjścia, liczonym od 1, numerem wiersza z pliku wejściowego (-n jest określone przez normą POSIX).

-T, --initial-tab
    Upewnia się, że pierwszy znak wiersza zawartości zależy od tabulacji, dzięki czemu wyrównanie tabulacji wygląda normalnie. Jest to użyteczne z opcjami, które poprzedzają swoje wyjście jakąś zawartością: -H, -n i -b. Aby zwiększyć prawdopodobieństwo, że wiersze z danego pliku będą się zaczynać w tej samej kolumnie, numer wiersza i offset bajtowy (jeśli jest obecny) zostanie wyświetlony z najmniejszą szerokością pola.

-u, --unix-byte-offsets
    Wyświetla offsety bajtowe w stylu uniksowym. Przełącznik ten powoduje, że grep wyświetla offsety bajtowe tak, jakby był plikiem tekstowym typu uniksowego tzn. bez znaków CR (powrót karetki). Da to rezultaty identyczne jak uruchomienie grepa na systemie uniksowym. Opcja ta nie wywołuje żadnego efektu, chyba że użyto także opcji -b oraz nic nie zmienia na platformach innych niż MS-DOS i MS Windows.

-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, znak nowego wiersza. Opcja ta powoduje, że wyjście jest jednoznaczne, nawet przy nazwach plików zawierających niecodzienne znaki, jak znak nowego wiersza. Może być wykorzystywana z poleceniami typu: find -print0, perl -0, sort -z i xargs -0, umożliwiając przetwarzanie plików o dowolnych nazwach, nawet zawierających znaki nowego wiersza.

  Kontrola wierszy z kontekstem

-A LICZBA, --after-context=LICZBA
    Wyświetla LICZBĘ wierszy z kontekstem, następujących po dopasowanych wierszach. Pomiędzy ciągłymi grupami dopasowań umieszczany jest wiersz zawierający separator grupy (--). Nie działa z opcją -o lub --only-matching, wyświetlane jest wówczas również ostrzeżenie.

-B LICZBA, --before-context=LICZBA
    Wyświetla LICZBĘ wierszy z kontekstem, poprzedzających dopasowane wiersze. Pomiędzy ciągłymi grupami dopasowań umieszczany jest wiersz zawierający separator grupy (--). Nie działa z opcją -o lub --only-matching, wyświetlane jest wówczas również ostrzeżenie.

-C LICZBA, -LICZBA, --context=LICZBA
    Wyświetla LICZBĘ wierszy z kontekstem. Pomiędzy ciągłymi grupami dopasowań umieszczany jest wiersz zawierający separator grupy (--). Nie działa z opcją -o lub --only-matching, wyświetlane jest wówczas również ostrzeżenie.

  Wybór plików i katalogów

-a, --text
    Przetwarza plik binarny tak, jakby był on plikiem tekstowym; jest to odpowiednik opcji --binary-files=text.

--binary-files=TYP
    Jeśli pierwszych kilka bajtów pliku wskazuje, że zawiera on dane binarne, to zakładane jest, że jest to plik danego TYPU. Domyślnym TYPEM jest binarny binary, a grep normalnie albo wypisuje jednowierszowy komunikat mówiący o dopasowaniu pliku binarnego, albo nie wypisuje komunikatu, jeśli 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 śmieci binarne dadzą przykre skutki uboczne, jeżeli wyjściem będzie terminal, a jego sterownik zinterpretuje niektóre z nich jako swoje polecenia.

-D DZIAŁANIE, --devices=DZIAŁANIE
    Jeśli plik wejściowy jest urządzeniem, FIFO lub gniazdem, używa DZIAŁANIA do przetworzenia go. Domyślnym DZIAŁANIEM jest read, co znaczy, że urządzenia są odczytywane dokładnie tak samo, jak gdyby były zwykłymi plikami. Jeśli wartością DZIAŁANIA jest skip, to urządzenia są po cichu pomijane.

-d DZIAŁANIE, --directories=DZIAŁANIE
    Jeśli plik wejściowy jest katalogiem, używa DZIAŁANIA do przetworzenia go. Domyślnym DZIAŁANIEM jest read, tzn. odczytywanie katalogów dokładnie tak samo, jak gdyby były zwykłymi plikami. Jeśli wartością DZIAŁANIA jest skip, to urządzenia są po cichu pomijane. Jeśli DZIAŁANIEM jest recurse, odczytywane są rekurencyjnie wszystkie pliki w danym katalogu, podążając za dowiązaniami symbolicznymi wyłącznie wtedy, gdy zostały podane w wierszu polecenia. Jest to równoważne podaniu opcji -r.

--exclude=WZORZEC
    Pomija pliki, których nazwy pasują do wzorca WZORZEC (używając maski; taki wzorzec nazywany jest tradycyjnie "glob"). Wzorzec nazwy pliku może używać *, ?, oraz [...] jako masek i \ aby zacytować symbol lub znak odwrotnego ukośnika.

--exclude-from=PLIK
    Pomija pliki, których nazwa pasuje do któregoś ze wzorców odczytanego z PLIKU (używając masek, opisanych w opcji -exclude).

--exclude-dir=KATALOG
    Pomija katalogi pasujące do wzorca KATALOG z wyszukiwania rekursywnego.

-I  Przetwarza plik binarny tak, jakby nie zawierał pasujących danych, jest to równoważne opcji --binary-files=without-match.

--include=WZORZEC
    Przeszukuje jedynie pliki, których nazwy pasują do WZORCA (używając masek opisanych w opcji --exclude).

-r, --recursive
    Czyta rekurencyjnie wszystkie pliki pod każdym katalogiem, podążając za dowiązaniami symbolicznymi tylko jeśli zostały podane w wierszu polecenia. Jest to równoważne opcji -d recurse.

-R, --dereference-recursive
    Czyta rekurencyjnie wszystkie pliki pod każdym katalogiem. Podąża za każdym dowiązaniem symbolicznym, w odróżnieniu od -r.

  Inne opcje

--line-buffered
    Używa buforowania wierszy wyjścia. Użycie tej opcji może spowodować niższą wydajność.

--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 pamięci) jeśli podczas działania grepa plik wejściowy skurczy się lub wystąpi błąd wejścia/wyjścia.

-U, --binary
    Traktuje plik(i) jako binarne. Domyślnie, w MD-DOS-ie i MS Windows, grep zgaduje typ pliku analizując zawartość pierwszych 32 kB odczytanych z pliku. Jeśli zdecyduje, że plik jest tekstowy, usuwa znaki CR (powrót karetki) z oryginalnej zawartości pliku (po to żeby wyrażenia regularne z ^ i $ działały poprawnie). Podanie -U wyłącza tę analizę powodując, że wszystkie pliki są odczytywane i przekazywane mechanizmowi dopasowującemu dosłownie; jeśli plik jest plikiem tekstowym z parami CR/LF na końcu wierszy, 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.

-z, --null-data
    Traktuje wejście jako zestaw wierszy zakończonych bajtem zerowym (znak ASCII NUL) zamiast znakiem końca wiersza. Podobnie jak opcje -Z lub --null, ta opcja może być używana z programami takimi jak sort -z, aby przetworzyć nazwy plików o dowolnych nazwach.

WYRAŻENIA REGULARNE
Wyrażenie regularne to wzorzec opisujący zbiór łańcuchów. Wyrażenia regularne są budowane analogicznie do wyrażeń arytmetycznych, przez zastosowanie do połączenia mniejszych wyrażeń, rozmaitych operatorów.

Program grep rozumie trzy różne wersje składni wyrażeń regularnych: "podstawową" (BRE), "rozszerzoną" (ERE) i "perlową" (PRCE). W GNU grep nie ma różnicy w funkcjonalności pomiędzy składniami podstawową i rozszerzoną. W innych implementacjach, podstawowe wyrażenia regularne są uboższe. Poniższy opis stosuje się do rozszerzonych wyrażeń regularnych, różnice w stosunku do wyrażeń podstawowych podsumowano na końcu. Wyrażenia regularne Perla, udokumentowane w podręcznikach systemowych pcresyntax(3) i pcrepattern(3), mają więcej funkcji lecz działają tylko jeśli w systemie jest dostępne pcre.

Podstawowymi "cegiełkami" są wyrażenia regularne pasujące do pojedynczego znaku. Większość znaków, w tym wszystkie litery i cyfry są wyrażeniami regularnymi pasującymi do samych siebie. Każdy metaznak mający specjalne znaczenie może być zacytowany przez poprzedzenie go odwrotnym ukośnikiem.

Kropka . pasuje do każdego pojedynczego znaku.

  Klasy znakowe i wyrażenia klamrowe
Wyrażenie klamrowe jest listą znaków zawartych pomiędzy [ a ]. Pasuje do każdego pojedynczego znaku na tej liście, a jeśli pierwszy znak z listy jest daszkiem ^, to wyrażenie pasuje do każdego pojedynczego znaku nie znajdującego się na liście. Na przykład, wyrażenie regularne [0123456789] pasuje do każdej cyfry.

W obrębie wyrażenia klamrowego, wyrażenie zakresowe składa się z dwóch znaków rozdzielonych minusem. Pasuje do pojedynczego znaku, który mieści się między tymi dwoma znakami, łącznie z nimi, używając ustawień językowych (locale) określających kolejność i zestaw znaków. Na przykład, w domyślnych ustawieniach locale C, [a-d] jest odpowiednikiem [abcd]. Wiele ustawień regionalnych sortuje znaki w kolejności słownikowej, i [a-d] nie jest wtedy z reguły odpowiednikiem [abcd], może być na przykład równoważne [aBbCcDd] (dla języka polskiego: [aąbcćd] - tłum.). Aby uzyskać tradycyjną interpretację wyrażeń zakresowych, można użyć locale C, przypisując zmiennej środowiskowej LC_ALL wartość C.

Istnieją predefiniowane, nazwane klasy znakowe, których można używać wewnątrz wyrażeń klamrowych. Posiadają opisowe nazwy w języku angielskim i są to: [:alnum:] (litery i cyfry), [:alpha:] (litery), [:cntrl:] (znaki kontrolne), [:digit:] (cyfry), [:graph:] ([:alnum:] i [:punct:]), [:lower:] (małe litery), [:print:] ([:graph:] i spacja), [:punct:] (znaki przestankowe), [:space:] (białe znaki), [:upper:] (duże litery) i [:xdigit:] (znaki szesnastkowe). Na przykład [[:alnum:]] zawiera zestaw liter i cyfr zależnych od aktualnych ustawień językowych. W ustawieniach locale C i kodowaniu znaków ASCII, jest to odpowiednik [0-9A-Za-z]. Proszę zauważyć, ż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 wyrażeń klamrowych. Aby umieścić tam dosłowny znak ], należy go umieścić jako pierwszy. Podobnie, dosłowny ^, może się znaleźć gdziekolwiek poza pierwszym miejscem. W końcu, dosłowny - musi się znaleźć na końcu.

  Początek i koniec wiersza
Znak daszka ^ i dolara $ są metaznakami, które pasują odpowiednio do łańcucha pustego na początku i końcu wiersza.

  Ukośnik i wyrażenia specjalne
Symbole \< i \> oznaczają pusty łańcuch odpowiednio na początku i końcu słowa. Symbol \b pasuje do pustego łańcucha na krawędzi słowa, zaś \B pasuje do ciągu pustego zakładając, że nie jest na krawędzi słowa. Symbol \w jest synonimem [_[:alnum:]], z kolei \W jest synonimem [^_[:alnum:]].

  Powtarzanie
Po wyrażeniach regularnych mogą się znajdować jeden lub kilka operatorów powtórzenia:
?   Poprzedzający element jest opcjonalny i dopasowany co najwyżej jeden 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.
{n,m}
    Poprzedzający element pasuje co najmniej n razy, ale nie więcej niż m razy.

  Suma
Dwa wyrażenia regularne można ze sobą złączyć; do wynikowego wyrażenia regularnego pasuje każdy łańcuch utworzony przez złączenie dwóch podłańcuchów, które odpowiednio pasują do złączonych wyrażeń.

  Alternatywa
Dwa wyrażenia regularne można połączyć operatorem wrostkowym |; do wynikowego wyrażenia regularnego pasuje dowolny łańcuch pasujące do jednego bądź do drugiego z podwyrażeń.

  Kolejność wykonywania
Powtarzanie ma priorytet na sumowaniem, które z kolei ma priorytet nad alternatywą. Całe wyrażenie regularne można ująć w nawiasy, celem unieważnienia reguł priorytetowych. W ten sposób zostanie utworzone podwyrażenie.

  Odwołania zwrotne i podwyrażenia
Odwołanie zwrotne \n, gdzie n jest cyfrą pasującą do podłańcucha dopasowanego poprzednio przez n-te podwyrażenie wyrażenia regularnego, ujęte w nawiasy.

  Podstawowe i rozszerzone wyrażenia regularne
W podstawowych wyrażeniach regularnych metaznaki ?, +, {, |, ( i ) tracą swoje szczególne znaczenie; zamiast nich należy używać wersji z odwrotnym ukośnikiem: \?, \+, \{, \|, \( oraz \).

Tradycyjny egrep nie obsługuje metaznaku {. Niektóre implementacje udostępniają zamiast niego \{, więc przenośne skrypty powinny unikać { we wzorcach grep -E, a do dopasowania dosłownego znaku { stosować [{].

GNU grep -E usiłuje obsługiwać tradycyjny sposób użycia zakładając, że { nie posiada specjalnego znaczenia, jeśli byłby on początkiem nieprawidłowego określenia liczby powtórzeń. Na przykład polecenie grep -E '{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
Zachowanie grepa można zmienić poniższymi zmiennymi środowiskowymi.

Ustawienia regionalne (locale) dla kategorii LC_foo są określane przez sprawdzanie trzech zmiennych środowiska, LC_ALL, LC_foo, LANG; w tej kolejności. Pierwsza z tych zmiennych, która jest ustawiona, określa locale. Na przykład, jeśli LC_ALL nie jest ustawiona, ale LC_MESSAGES jest ustawiona na pt_BR, to dla kategorii LC_MESSAGES używane są ustawienia brazylijskiej odmiany portugalskiego. Jeśli żadna z powyższych zmiennych nie jest ustawiona, katalog locale nie jest zainstalowany, lub grep nie został skompilowany z obsługą języka narodowego (NLS), to używane są locale C.

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 ustawione na '--binary-files=without-match --directories=skip', to grep zachowa się tak, jakby podano dwie opcje --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.

GREP_COLOR
    Ta zmienna określa kolor używany do podświetlenia dopasowanego (niepustego) tekstu. Jest przestarzała, lecz wciąż obsługiwana; powinno się obecnie używać GREP_COLORS. Możliwości mt, ms i mc zmiennej GREP_COLORS mają nad nią priorytet. Zmienna może określać jedynie kolor używany do podświetlania pasującego, niepustego tekstu w pasującym wierszu (wybranym, jeśli nie podano opcji -v albo wierszu kontekstu jeśli ją wpisano). Domyślnym ustawieniem jest 01;31, czyli pogrubiony, czerwony tekst na domyślnym tle terminala.

GREP_COLORS
    Określa kolory i inne atrybuty użyte do podświetlania różnych części wyniku. Jej wartością jest lista możliwości, oddzielonych dwukropkami, która domyślnie wygląda następująco: ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36, z pominiętymi wartościami logicznymi rv i ne (tzn. ustawionymi na fałsz). Obsługiwane możliwości to:

    sl= Podciąg SGR dla całego wybranego wiersza (tzn. pasującego, jeśli nie podano opcji -v lub niepasującego w przeciwnym wypadku). Jeśli jednak wartość logiczna rv i opcja wiersza poleceń -v zostały podane, to będzie on dotyczył w zamian kontekstu pasujących wierszy. Domyślnie jest pusta (tzn. ustawiona jest domyślna para kolorów terminala).

    cx= Podciąg SGR dla wszystkich wierszy kontekstu (tzn. niepasujących wierszy, jeśli nie podano opcji -v lub pasujących w przeciwnym wypadku). Jeśli jednak wartość logiczna rv i opcja wiersza poleceń -v zostały podane, to będzie on dotyczył w zamian wybranych, niepasujących wierszy. Domyślnie jest pusta (tzn. ustawiona jest domyślna para kolorów terminala).

    rv  Wartość logiczna, która odwraca znaczenie możliwości sl= i cx=, kiedy podano opcję wiersza poleceń -v. Domyślnie jest ustawiona na fałsz (tzn. możliwość jest pominięta).

    mt=01;31
        Podciąg SGR do pasującego, niepustego tekstu w dowolnym pasującym wierszu (tzn. wybranego wiersza, jeśli nie podano opcji wiersza poleceń -v lub wiersza kontekstu w przeciwnym wypadku). Ustawienie go jest odpowiednikiem podania ms= i mc= z tą samą wartością. Domyślnie jest to czerwony, pogrubiony tekst na aktualnym tle wiersza.

    ms=01;31
        Podciąg SGR do pasującego, niepustego tekstu w wybranym wierszu (jest używana tylko jeśli nie podano opcji wiersza poleceń -v). Efekt możliwości sl= (lub cx= w przypadku rv) pozostaje aktywny. Domyślnie jest to czerwony, pogrubiony tekst na aktualnym tle wiersza.

    mc=01;31
        Podciąg SGR do pasującego, niepustego tekstu w wierszu kontekstu (jest używana tylko jeśli podano opcję wiersza poleceń -v). Efekt możliwości cx= (lub sl= w przypadku rv) pozostaje aktywny. Domyślnie jest to czerwony, pogrubiony tekst na aktualnym tle wiersza.

    fn=35
        Podciąg SGR do nazw plików poprzedzających wszystkie wiersze zawartości. Domyślnie jest to purpurowy tekst na domyślnym tle terminala.

    ln=32
        Podciąg SGR do numerów wierszy poprzedzających wszystkie wiersze zawartości. Domyślnie, jest to zielony tekst na domyślnym tle terminala.

    bn=32
        Podciąg SGR do offsetu bajtowego poprzedzającego wszystkie wiersze zawartości. Domyślnie, jest to zielony tekst na domyślnym tle terminala.

    se=36
        Podciąg SGR do separatorów wstawianych pomiędzy wybranymi polami wiersza (:), pomiędzy polami wierszy kontekstu (- i pomiędzy grupami przyległych wierszy, jeśli wybrano niezerowy kontekst (--). Domyślnie jest to cyjanowy tekst na domyślnym tle terminala.

    ne  Wartość logiczna, która zapobiega czyszczeniu końca wiersza przy użyciu sekwencji Erase in Line (EL) to Right (\33[K) za każdym razem, gdy kończy ko pokolorowany wpis. Jest to wymagane na terminalach, które nie obsługują EL. Wartość jednak potrzebna na terminalach, dla których możliwość logiczna back_color_erase (bce) nie ma zastosowania, gdy wybrane kolory podświetlenia nie zmieniają tła, gdy EL jest zbyt wolne bądź powoduje znaczne migotanie. Domyślnym ustawieniem jest fałsz (tzn. możliwość jest pominięta).

    Proszę zauważyć, że wartości logiczne nie posiadają części "=...". Są one domyślne pominięte (tzn. fałszywe) i stają się prawdziwe, jeśli zostaną podane.

    Proszę zapoznać się z rozdziałem Select Graphic Rendition (SGR) w dokumentacji używanego terminala tekstowego, aby dowiedzieć się jakie są dozwolone wartości oraz poznać ich znaczenie. Te wartości podciągów są liczbami całkowitymi w systemie dziesiętnych i mogą być łączone średnikami. Program grep zajmuje się łączeniem rezultatu w kompletną sekwencję SGR (\33[...m). Najczęściej używane wartości to: 1 - pogrubienie, 4 - podkreślenie, 5 - miganie, 7 - odwrócenie kolorów, 39 - domyślny kolor tła, od 30 do 37 - kolory tekstu, od 90 do 97 - kolory tekstu w trybie 16 kolorów, od 38;5;0 do 38;5;255 - kolory tekstu w trybie 88 i 256 kolorów, 49 - domyślny kolor tła, od 40 do 47 kolory tła, od 100 do 107 - kolory tła w trybie 16 kolorów i od 48;5;0 do 48;5;255 - kolory tła w trybie 88 i 256 kolorów.

LC_ALL, LC_COLLATE, LANG
    Zmienne określające ustawienia regionalne dla kategorii LC_COLLATE, która wyznacza kolejność sortowania używaną do interpretowania wyrażeń zakresowych, takich jak [a-z].

LC_ALL, LC_CTYPE, LANG
    Zmienne określające ustawienia regionalne dla kategorii LC_CTYPE, która wyznacza typ znaków np. które znaki są białymi znakami.

LC_ALL, LC_MESSAGES, LANG
    Zmienne określające ustawienia regionalne dla kategorii LC_MESSAGES, która wyznacza język, używany przez grepa do wyświetlania komunikatów. Domyślne locale C używają wiadomości w amerykańskiej odmianie angielskiego.

POSIXLY_CORRECT
    Jeśli jest ustawiona, to grep zachowuje się zgodnie z wymaganiami normy POSIX.2; w przeciwnym razie grep działa 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_
    N jest tu numerycznym identyfikatorem procesu grepa. Jeśli i-tym znakiem wartości tej zmiennej środowiska jest 1, to i-ty argument przekazany do grepa 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 dlatego 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
Status zakończenia wynosi 0 jeśli znaleziono dopasowania i 1 jeśli nie znaleziono żadnych. W przypadku wystąpienia błędu, status zakończenia wynosi 2 (uwaga: kod obsługujący błędy zgodnie z normą POSIX powinien szukać statusu wynoszącego 2 lub więcej).

PRAWA AUTORSKIE
Copyright 1998-2000, 2002, 2005-2012 Free Software Foundation, Inc.

Jest to wolne oprogramowanie; warunki rozpowszechniania znajdują się w źródle programu. NIE ma gwarancji, nawet PRZYDATNOŚCI HANDLOWEJ czy PRZYDATNOŚCI DO OKREŚLONEGO CELU.

BŁĘDY

  Zgłaszanie błędów
Proszę wysyłać zgłoszenia błędów na adres <bug-grep@gnu.org>, strona internetowa odpowiadająca tej grupie dyskusyjnej to <http://lists.gnu.org/mailman/listinfo/bug-grep>. System śledzenia błędów Savannah grepa można znaleźć pod adresem <http://savannah.gnu.org/bugs/?group=grep>.

  Znane błędy
Duże liczniki powtórzeń w konstrukcji {n,m} 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.

Odwołania zwrotne są bardzo powolne i mogą wymagać czasu rosnącego wykładnicza.

ZOBACZ TAKŻE

  Zwykłe strony man
awk(1), cmp(1), diff(1), find(1), gzip(1), perl(1), sed(1), sort(1), xargs(1), zgrep(1), mmap(2), read(2), pcre(3) pcresyntax(3), pcrepattern(3), terminfo(5), glob(7), regex(7).

  Podręcznik programisty POSIX
grep(1p).

  Dokumentacja TeXinfo
Pełna dokumentacja grepa jest dostępna w podręczniku TeXinfo, z którym można zapoznać się pod adresem http://www.gnu.org/software/grep/manual/. Jeśli programy info i grep są poprawnie zainstalowane, to polecenie

    info grep

powinno dać dostęp do pełnego podręcznika.

UWAGI
Niniejsza strona podręcznika jest utrzymywana jedynie częściowo - pełna dokumentacja jest często aktualniejsza.

GNU's to nie Unix, ale Unix jest bestią - wszak w liczbie mnogiej mieni się Unixenem.

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Gwidon S. Naskrent (PTM) <naskrent@hoth.amu.edu.pl>, Wojciech Kotwica (PTM) <wkotwica@post.pl> i Michał Kułach <michal.kulach@gmail.com>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 2.14 oryginału.