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 (a nie
wyrażeń regularnych) 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. Opcja ta ma ten sam skutek, jak ujęcie
całego wyrażenia między znaki ^ i $
(-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ść.
- -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.
- {,m}
- Poprzedzający element pasuje co najwyżej m razy. Jest
to rozszerzenie GNU.
- {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 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; w przeciwnym razie grep działa
bardziej jak inne programy GNU. POSIX żą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 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.
KOD ZAKOŃCZENIA¶
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-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.
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),
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.20 oryginału.