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¶
- --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, co znaczy, że katalogi
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. Jeśli DZIAŁANIEM jest recurse,
grep odczytuje rekursywnie wszystkie pliki w danym katalogu; 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, -r, --recursive
- Czyta rekurencyjnie wszystkie pliki pod każdym
katalogiem, jest to równoważne opcji -d recurse.
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 mają więcej funkcji, ale
mogą nie być dostępne na każdym systemie. Ich dokumentacja
znajduje się w podręcznikach systemowych
pcresyntax(3) i
pcrepattern(3).
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. Jeśli programy
info i
grep są poprawnie
zainstalowane, to polecenie
- info grep
powinno dać dostęp do pełnego podręcznika.
UWAGI¶
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.12 oryginału.