GREP(1) Polecenia uzytkownika GREP(1) NAZWA grep - wypisuje wiersze pasujace do wzorca SKLADNIA grep [OPCJA...] WZORCE [PLIK...] grep [OPCJA...] -e WZORCE ... [PLIK...] grep [OPCJA...] -f PLIK_WZORCOWY ... [PLIK...] OPIS grep szuka WZORCOW w kazdym PLIKU. Wzorcow moze byc wiecej niz jeden, nalezy je wowczas rozdzielic znakiem nowego wiersza, przy czym grep wypisze kazdy wiersz pasujacy do ktoregos z wzorcow. WZORCE powinny byc zwykle cytowane, jesli grep jest uzywany jako polecenie powloki. PLIK - oznacza standardowe wejscie. Jesli nie podano PLIKU, rekurencyjne wyszukiwania sprawdza obecny katalog roboczy, a nierekurencyjne - czytaja ze standardowego wejscia. OPCJE Standardowe informacje programu --help Wyswietla komunikat pomocy i wychodzi. -V, --version Wyswietla numer wersji grep i wychodzi. Skladnia wzorca -E, --extended-regexp Interpretuje WZORCE jako rozszerzone wyrazenie regularne (ERE, patrz nizej). -F, --fixed-strings Interpretuje WZORCE jako literalne ciagi znakow, a nie jako wyrazenia regularne. -G, --basic-regexp Interpretuje WZORCE jako podstawowe wyrazenie regularne (BRE, patrz nizej). Jest to zachowanie domyslne. -P, --perl-regexp Interpretuje WZORCE jako wyrazenie regularne kompatybilne z Perlem (PCRE). Jest to opcja wysoce eksperymentalna, polaczenie z opcjami -z (--null-data) oraz grep -P moze ostrzegac o jeszcze niewdrozonych funkcjach. Kontrola dopasowania -e WZORCE, --regexp=WZORCE Uzywa WZORCE jako wzorca. Jezeli ta opcja zostala uzyta wielokrotnie lub jest polaczona z opcja -f (--file), szuka wszystkich podanych wzorcow. Ta opcja moze byc uzyta do ochrony wzorcow rozpoczynajacych sie znakiem ,,-". -f PLIK, --file=PLIK Pobiera wzorce z PLIKU, po jednym na wiersz. Jezeli ta opcja zostala uzyta wielokrotnie lub jest polaczona z opcja -e (--regexp), szuka wszystkich podanych wzorcow. Pusty plik zawiera zero wzorcow, wiec nie pasuje do niczego. Jesli PLIKIEM jest -, odczytuje wzorce ze standardowego wejscia. -i, --ignore-case Ignoruje roznice wielkosci liter we wzorcach oraz danych wejsciowych, tak by znaki, ktore roznia sie tylko wielkoscia pasowaly do siebie. --no-ignore-case Nie ignoruje roznicy wielkosci liter we wzorcach oraz w danych wejsciowych. Jest to zachowanie domyslne. Ta opcja jest uzyteczna by przekazac skryptowi powloki, ktory juz uzywa -i, by anulowal ten efekt poniewaz te dwie opcje sie nadpisuja. -v, --invert-match Odwraca sens dopasowania, wybierajac wiersze niepasujace. -w, --word-regexp Wybiera tylko te wiersze, w ktorych dopasowane wzorce tworza cale slowa. Przeprowadzany test polega na tym, ze dopasowany podlancuch musi albo znajdowac sie na poczatku wiersza, albo byc poprzedzony znakiem nietworzacym slowa. Podobnie, musi albo znajdowac sie na koncu wiersza, albo musi nastepowac po nim znak nietworzacy slowa. Znakami tworzacymi slowa sa litery, cyfry i znak podkreslenia. Ta opcja nie zadziala, jesli podano rowniez -x. -x, --line-regexp Wybiera tylko te dopasowania, ktore dokladnie pasuja do calego wiersza. W przypadku wzoru wyrazenia regularnego, ma to taki sam skutek, jak umieszczenie calego wyrazenia w nawiasach i otoczenie go ^ oraz $. Ogolna kontrola wyniku -c, --count Wylacza normalne wyjscie, zamiast niego, dla kazdego pliku wejsciowego, wypisuje liczbe pasujacych wierszy. Z opcja -v, --invert-match (patrz wyzej), liczy wiersze niepasujace. --color[=KIEDY], --colour[=KIEDY] Otacza pasujace (niepuste) lancuchy, pasujace wiersze, wiersze kontekstu, nazwy plikow, numery wierszy, przesuniecie w bajtach oraz separatory (dla pol i grup w wierszach kontekstu) znakami odpowiadajacymi za wyswietlanie kolorow w terminalu. Kolory sa zdefiniowane przez zmienna srodowiskowa GREP_COLORS. Parametr KIEDY moze przyjmowac wartosci: never (nigdy), always (zawsze) i auto (automatycznie). -L, --files-without-match Wylacza normalne wyjscie, zamiast niego wypisuje nazwe kazdego pliku, z ktorego normalnie nie wypisano by zadnego wyniku. -l, --files-with-matches Wylacza normalne wyjscie, zamiast niego wypisuje nazwe kazdego pliku, z ktorego normalnie wypisano by wynik. Przeszukiwanie kazdego pliku wejsciowego konczy sie na pierwszym pasujacym wyniku. -m LICZBA, --max-count=LICZBA Zatrzymuje odczytywanie pliku po LICZBIE pasujacych wierszy. Jesli LICZBA wynosi zero, grep zatrzymuje sie od razu, bez odczytywania wejscia. Jesli LICZBA wynosi -1, jest traktowana jako nieskonczonosc i grep sie nie zatrzymuje, tak jest domyslnie. Jesli wejscie jest standardowym wejsciem ze zwyklego pliku i wypisano LICZBE pasujacych wierszy, to grep upewnia sie przed zakonczeniem dzialania, ze standardowe wejscie jest ustawione zaraz za ostatnim pasujacym wierszem, niezaleznie od obecnosci koncowych wierszy kontekstu. Umozliwia to wywolujacemu procesowi wznowienie wyszukiwania. Jesli grep zatrzyma sie po LICZBIE pasujacych wierszy, nie wyswietla koncowych wierszy kontekstu. Jezeli podano takze opcje -c lub --count, grep nie wyswietla liczby wiekszej niz LICZBA. Jesli podano rowniez opcje -v lub --invert-match, to grep zatrzymuje wyswietlanie po wypisaniu LICZBY niepasujacych wierszy. -o, --only-matching Wyswietla tylko pasujace (niepuste) czesci pasujacego wiersza, kazda w osobnym wierszu. -q, --quiet, --silent Po cichu, nie wyswietla niczego na standardowe wyjscie. Przeszukiwanie zakonczy sie na pierwszym pasujacym wierszu ze statusem zero, nawet jesli wykryto blad. Patrz rowniez opcje -s lub --no-messages. -s, --no-messages Ignoruje bledy spowodowane przez nieistniejace lub nieczytelne pliki. Kontrola przedrostkow w wierszu wyjscia -b, --byte-offset Wypisuje przed kazdym wierszem wyjscia jego, liczone od 0, przesuniecie bajtowe w pliku wejsciowym. Jesli uzyto opcji -o (--only-matching), wyswietla przesuniecie samej pasujacej czesci. -H, --with-filename Wyswietla nazwe pliku dla kazdego dopasowania. Jest to domyslne ustawienie, jesli jest wiecej niz jeden plik do przeszukania. Rozszerzenie GNU. -h, --no-filename Odwoluje poprzedzanie wyjscia nazwami plikow. Jest to ustawienie domyslne, jesli jest tylko jeden plik (lub standardowe wejscie) do przeszukania. --label=ETYKIETA Wyswietla wejscie, ktore w rzeczywistosci pochodzi ze standardowego wejscia, jako wejscie pochodzace z pliku ETYKIETA. Moze to byc szczegolnie przydatne przy komendach, ktore przeksztalcaja zawartosc pliku przed wyszukiwaniem, np. gzip -cd foo.gz | grep --label=foo -H 'jakis wzorzec'. Patrz tez: opcja -H. -n, --line-number Poprzedza kazdy wiersz wyjscia, liczonym od 1, numerem wiersza z pliku wejsciowego. -T, --initial-tab Upewnia sie, ze pierwszy znak wiersza zawartosci zalezy od tabulacji, dzieki czemu wyrownanie tabulacji wyglada normalnie. Jest to uzyteczne z opcjami, ktore poprzedzaja swoje wyjscie jakas zawartoscia: -H, -n i -b. Aby zwiekszyc prawdopodobienstwo, ze wiersze z danego pliku beda sie zaczynac w tej samej kolumnie, numer wiersza i przesuniecie bajtowe (jesli sa obecne) zostana wyswietlone z najmniejsza szerokoscia pola. -Z, --null Zamiast znaku, ktory normalnie wystepuje po nazwie pliku, wypisuje bajt zerowy (ASCII NUL). Na przyklad, grep -lZ wypisuje po nazwie pliku bajt zerowy, zamiast, jak zwykle, znak nowego wiersza. Opcja ta powoduje, ze wyjscie jest jednoznaczne, nawet przy nazwach plikow zawierajacych niecodzienne znaki, jak znak nowego wiersza. Moze byc wykorzystywana z poleceniami typu: find -print0, perl -0, sort -z i xargs -0, umozliwiajac przetwarzanie plikow o dowolnych nazwach, nawet zawierajacych znaki nowego wiersza. Kontrola wierszy z kontekstem -A LICZBA, --after-context=LICZBA Wyswietla LICZBE wierszy z kontekstem, nastepujacych po dopasowanych wierszach. Pomiedzy ciaglymi grupami dopasowan umieszczany jest wiersz zawierajacy separator grupy (--). Nie dziala z opcja -o lub --only-matching, wyswietlane jest wowczas rowniez ostrzezenie. -B LICZBA, --before-context=LICZBA Wyswietla LICZBE wierszy z kontekstem, poprzedzajacych dopasowane wiersze. Pomiedzy ciaglymi grupami dopasowan umieszczany jest wiersz zawierajacy separator grupy (--). Nie dziala z opcja -o lub --only-matching, wyswietlane jest wowczas rowniez ostrzezenie. -C LICZBA, -LICZBA, --context=LICZBA Wyswietla LICZBE wierszy z kontekstem. Pomiedzy ciaglymi grupami dopasowan umieszczany jest wiersz zawierajacy separator grupy (--). Nie dziala z opcja -o lub --only-matching, wyswietlane jest wowczas rowniez ostrzezenie. --group-separator=SEPARATOR Gdy uzyto -A, -B, lub -C wypisuje SEPARATOR zamiast -- pomiedzy grupami wierszy. --no-group-separator Gdy uzyto -A, -B, lub -C nie wypisuje separatora pomiedzy grupami wierszy. Wybor plikow i katalogow -a, --text Przetwarza plik binarny tak, jakby byl on plikiem tekstowym; jest to odpowiednik opcji --binary-files=text. --binary-files=TYP Jezeli dane lub metadane pliku wskazuja na to, ze zawiera on dane binarne, zaklada, ze jest on typu TYP. Bajty nietekstowe oznaczaja dane binarne; sa to albo niepoprawnie zakodowane znaki, albo bajty wejsciowe null, kiedy opcja -z nie zostala uzyta. Domyslnym TYPEM jest binary, a grep przerywa zwracanie wynikow gdy wykryje binarny null w danych wejsciowych oraz blokuje na wyjsciu linie, ktore zawieraja zle sformatowane dane. Gdy czesc wyjscia jest zablokowana, grep konczy kazdy wynik wiadomoscia kierowana na standardowe wyjscie bledow i informujaca, ze plik binarny pasuje do wzorca. Jezeli TYPEM jest without-match, to kiedy grep wykryje, ze wejscie zawiera binarny null, zaklada, ze reszta pliku nie pasuje. Jest to odpowiednik opcji -I. Jezeli TYPEM jest text, to grep przetwarza plik binarny tak, jakby byl on plikiem tekstowym; jest to odpowiednik opcji -a. Kiedy TYP ma wartosc binary, grep moze traktowac bajty nietekstowe jako zakonczenia wierszy nawet bez opcji -z. To oznacza, ze wybor miedzy binary a text moze wplywac na to, czy wzorzec pasuje do pliku. Na przyklad, kiedy TYPEM jest binary, to wzorzec q$ moze pasowac do q po ktorym niespodziewanie nastepuje bajt null, nawet jesli te wzorce nie zostalaby dopasowane, gdyby TYPEM byl text. I odwrotnie, kiedy TYPEM jest binary, wzorzec . (kropka) moze nie zgadzac sie z bajtem null. Ostrzezenie: Opcja -a moze zwrocic binarny smietnik, co moze miec nieprzyjemne skutki, jezeli wyjsciem jest terminal, a sterownik terminala zinterpretuje to wszystko jako polecenia. Z drugiej jednak strony, czytajac pliki, ktorych kodowanie tekstu pozostaje nieznane, przydatne moze byc uzycie -a lub ustawienie zmiennej LC_ALL='C' w srodowisku, aby znalezc wiecej dopasowan, nawet jesli ich bezposrednie wyswietlenie byloby niebezpieczne. -D DZIALANIE, --devices=DZIALANIE Jesli plik wejsciowy jest urzadzeniem, kolejka FIFO lub gniazdem, uzywa DZIALANIA do przetworzenia go. Domyslnym DZIALANIEM jest read, co znaczy, ze urzadzenia sa odczytywane dokladnie tak samo, jak gdyby byly zwyklymi plikami. Jesli wartoscia DZIALANIA jest skip, to urzadzenia sa po cichu pomijane. -d DZIALANIE, --directories=DZIALANIE Jesli plik wejsciowy jest katalogiem, uzywa DZIALANIA do przetworzenia go. Domyslnym DZIALANIEM jest read, tzn. odczytywanie katalogow dokladnie tak samo, jak gdyby byly zwyklymi plikami. Jesli wartoscia DZIALANIA jest skip, to urzadzenia sa po cichu pomijane. Jesli DZIALANIEM jest recurse, odczytywane sa rekurencyjnie wszystkie pliki w danym katalogu, podazajac za dowiazaniami symbolicznymi wylacznie wtedy, gdy zostaly podane w wierszu polecenia. Jest to rownowazne podaniu opcji -r. --exclude=WZORZEC Pomija jakiekolwiek pliki z przyrostkiem nazwy, ktory zgadza sie ze WZORCEM uzywajac dopasowania wieloznacznego; przyrostek nazwy jest albo cala nazwa pliku, albo koncowa czescia, ktora zaczyna sie od znaku innego niz ukosnik wystepujacego od razu po ukosniku / w nazwie. Przy wyszukiwaniu rekurencyjnym, pomija jakikolwiek podplik, ktorego bazowa nazwa zgadza sie z WZORCEM; nazwa bazowa jest czescia po ostatnim /. Wzorzec moze wykorzystywac *, ? albo [...] jako wieloznaczniki oraz \, aby zacytowac wieloznacznik lub odwrocony ukosnik. --exclude-from=PLIK Pomija pliki, ktorych nazwa pasuje do ktoregos ze wzorcow odczytanego z PLIKU (uzywajac masek, opisanych w opcji -exclude). --exclude-dir=WZORZEC Pomija jakiekolwiek katalogi z przyrostkiem nazwy, ktory zgadza sie ze WZORCEM. Przy wyszukiwaniu rekurencyjnym, pomija jakiekolwiek podkatalogi, ktorych bazowa nazwa zgadza sie ze WZORCEM. Ignoruje wszystkie powtarzajace sie ukosniki we WZORCU. -I Przetwarza plik binarny tak, jakby nie zawieral pasujacych danych, jest to rownowazne opcji --binary-files=without-match. --include=WZORZEC Wypisuje jedynie pliki, ktorych nazwy bazowe pasuja do WZORCA (uzywajac masek opisanych w opcji --exclude). Jesli podano sprzeczne opcje --include i --exclude, wygrywa opcja, ktorej uda dopasowac sie jako ostatniej. Jesli obydwu opcjom nie uda sie niczego dopasowac, plik jest uwzgledniany, chyba ze jako pierwsza podano opcje --include. -r, --recursive Czyta rekurencyjnie wszystkie pliki pod kazdym katalogiem, podazajac za dowiazaniami symbolicznymi tylko jesli zostaly podane w wierszu polecenia. Prosze zauwazyc, ze jezeli nie jest dany zaden argument operacji, grep przeszukuje katalog roboczy. Jest to rownowazne opcji -d recurse. -R, --dereference-recursive Czyta rekurencyjnie wszystkie pliki pod kazdym katalogiem. Podaza za kazdym dowiazaniem symbolicznym, w odroznieniu od -r. Inne opcje --line-buffered Uzywa buforowania wierszy wyjscia. Uzycie tej opcji moze spowodowac nizsza wydajnosc. -U, --binary Traktuje plik(i) jako binarne. Domyslnie, w MS-DOS i MS-Windows, grep zgaduje, czy plik zawiera tekst lub dane binarne, jak zostalo to opisane przy opcji --binary-files. Jesli grep zdecyduje, ze plik jest tekstowy, usuwa znaki CR (powrot karetki) z oryginalnej zawartosci pliku (po to, zeby wyrazenia regularne z ^ i $ dzialaly poprawnie). Podanie -U wylacza te analize powodujac, ze wszystkie pliki sa odczytywane i przekazywane mechanizmowi dopasowujacemu doslownie; jesli plik jest plikiem tekstowym z parami CR/LF na koncu wierszy, spowoduje to, ze niektore wyrazenia regularne nie zadzialaja. Opcja ta nie dziala na platformach innych niz MS-DOS i MS-Windows. -z, --null-data Traktuje dane wejsciowe i wyjsciowe jako sekwencje wierszy zakonczonych bajtem zerowym (znak ASCII NUL) zamiast znakiem konca wiersza. Podobnie jak opcje -Z lub --null, ta opcja moze byc uzywana z programami takimi jak sort -z, aby przetworzyc nazwy plikow o dowolnych nazwach. WYRAZENIA REGULARNE Wyrazenie regularne to wzorzec opisujacy zbior lancuchow. Wyrazenia regularne sa budowane analogicznie do wyrazen arytmetycznych, przez zastosowanie do polaczenia mniejszych wyrazen, rozmaitych operatorow. Program grep rozumie trzy rozne wersje skladni wyrazen regularnych: ,,podstawowa" (BRE), ,,rozszerzona" (ERE) i ,,perlowa" (PCRE). W GNU grep skladnia podstawowa i rozszerzona stanowi tylko odmienna notacje tej samej funkcjonalnosci dopasowania wzorcow. W innych implementacjach, podstawowe wyrazenia regularne sa zwykle ubozsze niz rozszerzone, choc czasem bywa tez odwrotnie. Ponizszy opis stosuje sie do rozszerzonych wyrazen regularnych; roznice w stosunku do wyrazen podstawowych podsumowano na koncu. Wyrazenia regularne kompatybilne z Perlem maja inna funkcjonalnosc, sa udokumentowane w podrecznikach systemowych pcre2syntax(3) i pcre2pattern(3), lecz dzialaja tylko jesli w systemie jest dostepne PCRE. Podstawowymi cegielkami sa wyrazenia regularne pasujace do pojedynczego znaku. Wiekszosc znakow, w tym wszystkie litery i cyfry sa wyrazeniami regularnymi pasujacymi do samych siebie. Kazdy metaznak majacy specjalne znaczenie moze byc zacytowany przez poprzedzenie go odwrotnym ukosnikiem. Kropka . pasuje do kazdego pojedynczego znaku. Nie jest okreslone czy pasuje ona do bledu kodowania. Klasy znakowe i wyrazenia klamrowe Wyrazenie klamrowe jest lista znakow zawartych pomiedzy [ a ]. Pasuje do kazdego pojedynczego znaku na tej liscie. Jesli pierwszy znak z listy jest daszkiem ^, to wyrazenie pasuje do kazdego pojedynczego znaku nie znajdujacego sie na liscie; nie jest okreslone czy pasuje do bledu kodowania. Na przyklad, wyrazenie regularne [0123456789] pasuje do kazdej pojedynczej cyfry. W obrebie wyrazenia klamrowego, wyrazenie zakresowe sklada sie z dwoch znakow rozdzielonych minusem. Pasuje do pojedynczego znaku, ktory miesci sie miedzy tymi dwoma znakami, lacznie z nimi, uzywajac ustawien jezykowych (locale) okreslajacych kolejnosc i zestaw znakow. Na przyklad, w domyslnych ustawieniach locale C, [a-d] jest odpowiednikiem [abcd]. Wiele ustawien regionalnych sortuje znaki w kolejnosci slownikowej, i [a-d] nie jest wtedy z reguly odpowiednikiem [abcd], moze byc na przyklad rownowazne [aBbCcDd] (dla jezyka polskiego: [aabccd] - tlum.). Aby uzyskac tradycyjna interpretacje wyrazen zakresowych, mozna uzyc locale C, przypisujac zmiennej srodowiskowej LC_ALL wartosc C. Istnieja predefiniowane, nazwane klasy znakowe, ktorych mozna uzywac wewnatrz wyrazen klamrowych. Posiadaja opisowe nazwy w jezyku angielskim i sa to: [:alnum:] (litery i cyfry), [:alpha:] (litery), [:blank:] (puste), [:cntrl:] (znaki kontrolne), [:digit:] (cyfry), [:graph:] ([:alnum:] i [:punct:]), [:lower:] (male litery), [:print:] ([:graph:] i spacja), [:punct:] (znaki przestankowe), [:space:] (biale znaki), [:upper:] (duze litery) i [:xdigit:] (znaki szesnastkowe). Na przyklad [[:alnum:]] zawiera zestaw liter i cyfr zaleznych od aktualnych ustawien jezykowych. W ustawieniach locale C i kodowaniu znakow ASCII, jest to odpowiednik [0-9A-Za-z] (w polskich ustawieniach [0-9A-Za-z] - tlum.). (Prosze zauwazyc, ze nawiasy kwadratowe w nazwach klas sa czescia nazw symbolicznych i musza byc umieszczone dodatkowo, oprocz pary nawiasow ograniczajacej sama liste.) Wiekszosc metaznakow traci swoje szczegolne znaczenie wewnatrz wyrazen klamrowych. Aby umiescic tam doslowny znak ], nalezy go umiescic jako pierwszy. Podobnie, doslowny ^, moze sie znalezc gdziekolwiek poza pierwszym miejscem. W koncu, doslowny - musi sie znalezc na koncu. Poczatek i koniec wiersza Znak daszka ^ i dolara $ sa metaznakami, ktore pasuja odpowiednio do lancucha pustego na poczatku i koncu wiersza. Ukosnik i wyrazenia specjalne Symbole \< i \> oznaczaja pusty lancuch odpowiednio na poczatku i koncu slowa. Symbol \b pasuje do pustego lancucha na krawedzi slowa, zas \B pasuje do ciagu pustego zakladajac, ze nie jest na krawedzi slowa. Symbol \w jest synonimem [_[:alnum:]], z kolei \W jest synonimem [^_[:alnum:]]. Powtarzanie Po wyrazeniach regularnych moga sie znajdowac jeden lub kilka operatorow powtorzenia: ? Poprzedzajacy element jest opcjonalny i dopasowany co najwyzej jeden raz. * Poprzedzajacy element bedzie dopasowany zero lub wiecej razy. + Poprzedzajacy element bedzie dopasowany jeden lub wiecej razy. {n} Poprzedzajacy element pasuje dokladnie n razy. {n,} Poprzedzajacy element pasuje n lub wiecej razy. {,m} Poprzedzajacy element pasuje co najwyzej m razy. Jest to rozszerzenie GNU. {n,m} Poprzedzajacy element pasuje co najmniej n razy, ale nie wiecej niz m razy. Suma Dwa wyrazenia regularne mozna ze soba zlaczyc; do wynikowego wyrazenia regularnego pasuje kazdy lancuch utworzony przez zlaczenie dwoch podlancuchow, ktore odpowiednio pasuja do zlaczonych wyrazen. Alternatywa Dwa wyrazenia regularne mozna polaczyc operatorem wrostkowym |; do wynikowego wyrazenia regularnego pasuje dowolny lancuch pasujace do jednego badz do drugiego z podwyrazen. Kolejnosc wykonywania Powtarzanie ma priorytet na sumowaniem, ktore z kolei ma priorytet nad alternatywa. Cale wyrazenie regularne mozna ujac w nawiasy, celem uniewaznienia regul priorytetowych. W ten sposob zostanie utworzone podwyrazenie. Odwolania zwrotne i podwyrazenia Odwolanie zwrotne \n , gdzie n jest cyfra pasujaca do podlancucha dopasowanego poprzednio przez n-te podwyrazenie wyrazenia regularnego, ujete w nawiasy. Podstawowe i rozszerzone wyrazenia regularne W podstawowych wyrazeniach regularnych metaznaki ?, +, {, |, ( i ) traca swoje szczegolne znaczenie; zamiast nich nalezy uzywac wersji z odwrotnym ukosnikiem: \?, \+, \{, \|, \( oraz \). STATUS ZAKONCZENIA Typowo, statusem wyjsciowym jest 0 jesli dopasowano wiersz, 1, gdy nic nie dopasowano oraz 2, jezeli wystapil blad. Jednakze, jezeli uzyto -q, --quiet lub --silent oraz dopasowano wiersz, statusem wyjsciowym bedzie 0, nawet jesli wystapil blad. SRODOWISKO Zachowanie grepa mozna zmienic ponizszymi zmiennymi srodowiskowymi. Ustawienia regionalne (locale) dla kategorii LC_foo sa okreslane przez sprawdzanie trzech zmiennych srodowiska, LC_ALL, LC_foo, LANG; w tej kolejnosci. Pierwsza z tych zmiennych, ktora jest ustawiona, okresla locale. Na przyklad, jesli LC_ALL nie jest ustawiona, ale LC_MESSAGES jest ustawiona na pt_BR, to dla kategorii LC_MESSAGES uzywane sa ustawienia brazylijskiej odmiany portugalskiego. Jesli zadna z powyzszych zmiennych nie jest ustawiona, katalog locale nie jest zainstalowany, lub grep nie zostal skompilowany z obsluga jezyka narodowego (NLS), to uzywane sa locale C. Dostepne locale mozna sprawdzic komenda locale -a. GREP_COLORS Kontroluje sposob, w jaki opcja --color koloruje wyjscie. Jej wartoscia jest lista mozliwosci, oddzielonych dwukropkami, ktora domyslnie wyglada nastepujaco: ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36, z pominietymi wartosciami logicznymi rv i ne (tzn. ustawionymi na falsz). Obslugiwane mozliwosci to: sl= Podciag SGR dla calego wybranego wiersza (tzn. pasujacego, jesli nie podano opcji -v lub niepasujacego w przeciwnym wypadku). Jesli jednak wartosc logiczna rv i opcja wiersza polecen -v zostaly podane, to bedzie on dotyczyl w zamian kontekstu pasujacych wierszy. Domyslnie jest pusta (tzn. ustawiona jest domyslna para kolorow terminala). cx= Podciag SGR dla wszystkich wierszy kontekstu (tzn. niepasujacych wierszy, jesli nie podano opcji -v lub pasujacych w przeciwnym wypadku). Jesli jednak wartosc logiczna rv i opcja wiersza polecen -v zostaly podane, to bedzie on dotyczyl w zamian wybranych, niepasujacych wierszy. Domyslnie jest pusta (tzn. ustawiona jest domyslna para kolorow terminala). rv Wartosc logiczna, ktora odwraca znaczenie mozliwosci sl= i cx=, kiedy podano opcje wiersza polecen -v. Domyslnie jest ustawiona na falsz (tzn. mozliwosc jest pominieta). mt=01;31 Podciag SGR (zob. nizej) do pasujacego, niepustego tekstu w dowolnym pasujacym wierszu (tzn. wybranego wiersza, jesli nie podano opcji wiersza polecen -v lub wiersza kontekstu w przeciwnym wypadku). Ustawienie go jest odpowiednikiem podania ms= i mc= z ta sama wartoscia. Domyslnie jest to czerwony, pogrubiony tekst na aktualnym tle wiersza. ms=01;31 Podciag SGR do pasujacego, niepustego tekstu w wybranym wierszu (jest uzywana tylko jesli nie podano opcji wiersza polecen -v). Efekt mozliwosci sl= (lub cx= w przypadku rv) pozostaje aktywny. Domyslnie jest to czerwony, pogrubiony tekst na aktualnym tle wiersza. mc=01;31 Podciag SGR do pasujacego, niepustego tekstu w wierszu kontekstu (jest uzywana tylko jesli podano opcje wiersza polecen -v). Efekt mozliwosci cx= (lub sl= w przypadku rv) pozostaje aktywny. Domyslnie jest to czerwony, pogrubiony tekst na aktualnym tle wiersza. fn=35 Podciag SGR do nazw plikow poprzedzajacych wszystkie wiersze zawartosci. Domyslnie jest to purpurowy tekst na domyslnym tle terminala. ln=32 Podciag SGR do numerow wierszy poprzedzajacych wszystkie wiersze zawartosci. Domyslnie, jest to zielony tekst na domyslnym tle terminala. bn=32 Podciag SGR do offsetu bajtowego poprzedzajacego wszystkie wiersze zawartosci. Domyslnie, jest to zielony tekst na domyslnym tle terminala. se=36 Podciag SGR do separatorow wstawianych pomiedzy wybranymi polami wiersza (:), pomiedzy polami wierszy kontekstu (- i pomiedzy grupami przyleglych wierszy, jesli wybrano niezerowy kontekst (--). Domyslnie jest to cyjanowy tekst na domyslnym tle terminala. ne Wartosc logiczna, ktora zapobiega czyszczeniu konca wiersza przy uzyciu sekwencji Erase in Line (EL) to Right (\33[K) za kazdym razem, gdy konczy pokolorowany wpis. Jest to wymagane na terminalach, ktore nie obsluguja EL. Wartosc jednak potrzebna na terminalach, dla ktorych mozliwosc logiczna back_color_erase (bce) nie ma zastosowania, gdy wybrane kolory podswietlenia nie zmieniaja tla, gdy EL jest zbyt wolne badz powoduje znaczne migotanie. Domyslnym ustawieniem jest falsz (tzn. mozliwosc jest pominieta). Prosze zauwazyc, ze wartosci logiczne nie posiadaja czesci ,,=...". Sa one domyslne pominiete (tzn. falszywe) i staja sie prawdziwe, jesli zostana podane. Prosze zapoznac sie z rozdzialem Select Graphic Rendition (SGR) w dokumentacji uzywanego terminala tekstowego, aby dowiedziec sie jakie sa dozwolone wartosci oraz poznac ich znaczenie. Te wartosci podciagow sa liczbami calkowitymi w systemie dziesietnym i moga byc laczone srednikami. Program grep zajmuje sie laczeniem rezultatu w kompletna sekwencje SGR (\33[...m). Najczesciej uzywane wartosci to: 1 - pogrubienie, 4 - podkreslenie, 5 - miganie, 7 - odwrocenie kolorow, 39 - domyslny kolor tla, od 30 do 37 - kolory tekstu, od 90 do 97 - kolory tekstu w trybie 16 kolorow, od 38;5;0 do 38;5;255 - kolory tekstu w trybie 88 i 256 kolorow, 49 - domyslny kolor tla, od 40 do 47 kolory tla, od 100 do 107 - kolory tla w trybie 16 kolorow i od 48;5;0 do 48;5;255 - kolory tla w trybie 88 i 256 kolorow. LC_ALL, LC_COLLATE, LANG Zmienne okreslajace ustawienia regionalne dla kategorii LC_COLLATE, ktora wyznacza kolejnosc sortowania uzywana do interpretowania wyrazen zakresowych, takich jak [a-z]. LC_ALL, LC_CTYPE, LANG Te zmienne ustawiaja locale dla kategorii LC_CTYPE, od ktorej zaleza typy znakow, np. ktore sa znakami bialymi. Ta kategoria rowniez ustala kodowanie znakow, czyli to, czy tekst jest zakodowany w UTF-8, ASCII czy jakiejkolwiek innej stronie kodowej. W locale C lub POSIX, kazdy znak jest zakodowany jako pojedynczy bajt, wiec kazdy bajt jest poprawnym znakiem. LC_ALL, LC_MESSAGES, LANG Zmienne okreslajace ustawienia regionalne dla kategorii LC_MESSAGES, ktora wyznacza jezyk, uzywany przez grepa do wyswietlania komunikatow. Domyslne locale C uzywaja wiadomosci w amerykanskiej odmianie angielskiego. POSIXLY_CORRECT Jesli jest ustawiona, to grep zachowuje sie zgodnie z wymaganiami normy POSIX; w przeciwnym razie grep dziala bardziej jak inne programy GNU. POSIX wymaga, by opcje, ktore wystepuja po nazwach plikow byly traktowane jak nazwy plikow; domyslnie zas, opcje takie sa przesuwane na poczatek listy argumentow i traktowane jak opcje. Ponadto, POSIX wymaga, by nierozpoznane opcje byly zglaszane jako ,,nielegalne" (,,illegal"), ale poniewaz tak naprawde nie naruszaja one prawa, domyslnie zglaszane sa jako ,,nieprawidlowe" (,,invalid"). UWAGI Niniejsza strona podrecznika jest utrzymywana jedynie czesciowo - pelna dokumentacja jest czesto aktualniejsza. PRAWA AUTORSKIE Copyright 1998-2000, 2002, 2005-2023 Free Software Foundation, Inc. Jest to wolne oprogramowanie; warunki rozpowszechniania znajduja sie w zrodle programu. NIE ma gwarancji, nawet PRZYDATNOSCI HANDLOWEJ czy PRZYDATNOSCI DO OKRESLONEGO CELU. USTERKI Zglaszanie bledow Raporty bledow wysylac mailem na adres . Archiwum email oraz bug tracker Znane bledy Duze liczniki powtorzen w konstrukcji {n,m} moga spowodowac, ze grep zuzyje mnostwo pamieci. Oprocz tego, pewne inne niejasne wyrazenia regularne wymagaja czasu i przestrzeni rosnacej wykladniczo i moga spowodowac, ze grepowi zabraknie pamieci. Odwolania zwrotne sa bardzo powolne i moga wymagac czasu rosnacego wykladnicza. PRZYKLAD Przyklad ponizej zwraca lokacje oraz zawartosc kazdego wiersza zawierajacego ,,f" oraz konczacego sie ,,.c" we wszystkich plikach w obecnym katalogu, ktorych nazwy zawieraja ,,g" oraz koncza sie ,,.h". Opcja -n zwraca numery wierszy, parametr -- traktuje rozszerzenia ,,*g*.h" zaczynajace sie od ,,-" jako nazwy plikow zamiast jako opcje, a pusty plik /dev/null sprawia, ze nazwy plikow zostana zwrocone, nawet jesli tylko jedna nazwa bedzie miala forme ,,*g.h". $ grep -n -- 'f.*\.c$' *g*.h /dev/null argmatch.h:1:/* definitions and prototypes for argmatch.c Jedynym wierszem pasujacym do wzorca jest pierwszy wiersz pliku argmatch.h. Nalezy zauwazyc, ze skladnia wyrazenia regularnego uzyta we wzorcu rozni sie od ogolnej skladni uzywanej przez powloki by dopasowac nazwy plikow. ZOBACZ TAKZE Zwykle strony man awk(1), cmp(1), diff(1), find(1), perl(1), sed(1), sort(1), xargs(1), read(2), pcre2(3), pcre2syntax(3), pcre2pattern(3), terminfo(5), glob(7), regex(7) Pelna dokumentacja Pod adresem https://www.gnu.org/software/grep/manual/ dostepny jest pelen podrecznik grep. Jesli programy info i grep sa poprawnie zainstalowane, polecenie: info grep powinno dac dostep do pelnego podrecznika. TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Gwidon S. Naskrent , Wojtek Kotwica , Michal Kulach i Jakub Klimczak Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . GNU grep 3.11 2019-12-29 GREP(1)