grep, egrep, fgrep, rgrep
wypisuje wiersze pasujące do wzorca
- Provided by: manpages-pl (Version: 1:0.6-2)
- Report a bug
wypisuje wiersze pasujące do wzorca
grep [OPCJE] WZORZEC [PLIK...]
grep [OPCJE] [-e WZORZEC | -f PLIK]
[PLIK...]
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.
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.
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.
Znak daszka ^ i dolara $ są metaznakami, które pasują odpowiednio do łańcucha pustego na początku i końcu wiersza.
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:]].
Po wyrażeniach regularnych mogą się znajdować jeden lub kilka operatorów powtórzenia:
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ń.
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ń.
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ł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.
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 pozwala na takie zachowanie jako rozszerzenie standardu, ale przenośne skrypty powinny go unikać.
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.
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.
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).
Copyright 1998-2000, 2002, 2005-2014 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.
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>.
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.
awk(1), cmp(1), diff(1), find(1), gzip(1), perl(1), sed(1), sort(1), xargs(1), zgrep(1), read(2), pcre(3) pcresyntax(3), pcrepattern(3), terminfo(5), glob(7), regex(7).
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
powinno dać dostęp do pełnego podręcznika.
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.
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.20 oryginału.