Grep
Z wiki linux-user
(Utworzył nową stronę „Category:Polecenia systemu Linux == Polecenie grep == '''grep, egrep, fgrep''' wypisz linie pasujące do wzorca === Składnia === grep [opcje] wzorzec [plik......”) |
|||
Linia 16: | Linia 16: | ||
*'''-A num, --after-context=num''' | *'''-A num, --after-context=num''' | ||
− | + | Wypisuje po pasujących liniach num linii następującego kontekstu. | |
*'''-a, --text''' | *'''-a, --text''' | ||
− | + | Przetwarza plik binarny tak, jakby był on tekstowy; jest to równoważnik opcji --binary-fnums=text. | |
*'''-B num, --before-context=num''' | *'''-B num, --before-context=num''' | ||
Wypisuje przed pasującymi liniami num linii poprzedzającego kontekstu. | Wypisuje przed pasującymi liniami num linii poprzedzającego kontekstu. | ||
*'''-C [num], -num, --context[=num]''' | *'''-C [num], -num, --context[=num]''' | ||
− | + | Wypisuje num linii (domyślnie 2) kontekstu w wyjściu. | |
*''' -b, --byte-offset''' | *''' -b, --byte-offset''' | ||
− | + | Wypisuje przed każdą linią wyjścia jej offset bajtowy w pliku wejściowym. | |
*''' --binary-files=typ''' | *''' --binary-files=typ''' | ||
− | + | Jeśli pierwszych kilka bajtów pliku wskazuje, że zawiera on dane binarne, to zakładane jest, że jest to plik typu typ. Domyślnym typem jest binarny (binary), a grep normalnie albo wypisuje jednolinijkowy komunikat mówiący o dopasowaniu pliku binarnego, albo nie wypisuje komunikatu, gdy 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 śmiecie binarne dadzą przykre skutki uboczne jeżeli wyjściem będzie terminal a jego sterownik zinterpretuje niektóre z nich jako swoje polecenia. | |
*''' -c, --count''' | *''' -c, --count''' | ||
− | + | Wyłącza normalne wyjście; zamiast niego dla każdego pliku wejściowego wypisuje liczbę pasujących linii. Z opcją -v, --invert-match (patrz niżej), liczy linie niepasujące. | |
*'''-d akcja, --directories=akcja''' | *'''-d akcja, --directories=akcja''' | ||
− | + | Jeśli plik wejściowy jest katalogiem, stosuje to jego przetworzenia akcję. Domyślną akcją jest read, co znaczy, że katalogi są czytane dokładnie tak samo, jakby były zwykłymi plikami. Jeśli wartością akcji jest skip, to katalogi są milcząco pomijane. Jeśli wartością akcji jest recurse, to grep czyta wszystkie pliki pod każdym katalogiem, rekurencyjnie; jest to równoważne opcji -r. | |
*'''-E, --extended-regexp''' | *'''-E, --extended-regexp''' | ||
− | + | Interpretuje wzorzec jako rozszerzone wyrażenie regularne (patrz niżej). | |
*''' -e wzorzec, --regexp=wzorzec''' | *''' -e wzorzec, --regexp=wzorzec''' | ||
− | + | Używa wzorca jako wzorca; użyteczne do ochronienia wzorów zaczynających się od -. | |
*'''-F, --fixed-strings''' | *'''-F, --fixed-strings''' | ||
− | + | Interpretuje wzorzec jako listę łańcuchów o stałej długości, oddzielonych znakami nowej linii, które należy dopasować każdy z osobna. | |
*'''-f plik, --file=plik''' | *'''-f plik, --file=plik''' | ||
− | + | Pobiera wzorce z plik, po jednym z każdej linii. Plik pusty zawiera zero wzorców, nie pasując do niczego. | |
− | + | *''' -G, --basic-regexp''' | |
− | + | Interpretuje wzorzec jako podstawowe wyrażenie regularne (zobacz niżej). Jest to zachowanie domyślne. | |
− | + | ||
− | + | ||
− | + | ||
+ | *''' -H, --with-filename''' | ||
+ | Dla każdego dopasowania wypisuje nazwę pliku. | ||
− | + | *''' -h, --no-filename''' | |
− | Wyłącza poprzedzanie wyników nazwami plików podczas przeszukiwania | + | Wyłącza poprzedzanie wyników nazwami plików podczas przeszukiwania wielu plików. |
− | + | ||
− | |||
− | + | *'''--help''' | |
− | + | Wypisuje krótki tekst pomocy. | |
− | + | *''' -I''' | |
− | + | Przetwarza plik binarny tak, jakby nie zawierał on pasujących danych; jest to równoważne opcji --binary-files=without-match. | |
− | + | *''' -i, --ignore-case''' | |
− | + | Ignoruje rozróżnienia w wielkości liter we wzorcu oraz w plikach wejściowych. | |
− | -l, --files-with-matches | + | *''' -L, --files-without-match''' |
− | + | Wyłącza normalne wyjście; zamiast niego wypisuje nazwę każdego pliku, z którego nor- malnie nie wypisano by żadnego wyjścia. Przeszukiwanie zakończy się na pierwszej pasującej linii. | |
+ | |||
+ | *''' -l, --files-with-matches''' | ||
+ | Wyłącza normalne wyjście; zamiast niego wypisuje nazwę każdego pliku, z którego nor- malnie wypisano by jakieś wyjście. Przeszukiwanie zakończy się na pierwszej pasującej linii. | ||
− | + | *''' --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 rdzenia) jeśli podczas działania grep plik wejściowy się skurczy lub wystąpi błąd wejścia/wyjścia. | ||
− | + | *''' -n, --line-number''' | |
− | + | Poprzedza każdą linię wyjścia numerem linii z odpowiedniego pliku wejściowego. | |
− | + | *''' -q, --quiet, --silent''' | |
− | + | Po cichu; wyłącza normalne wyjście. Przeszukiwanie zakończy się na pierwszej pasującej linii. Zobacz także poniżej opcje -s lub --no-messages. | |
− | + | *''' -r, --recursive''' | |
− | + | Czyta wszystkie pliki pod każdym katalogiem, rekurencyjnie; jest to równoważne opcji -d recurse. | |
− | + | *''' -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, tradycyjny grep nie był zgodny z POSIX.2, gdyż brakowało mu opcji -q a opcja -s zachowywała się jak opcja -q z GNU grep. Skrypty powłoki, które mają być przenośne na tradycyjny grep powinny unikać zarówno -q, jak i -s i zamiast tego przekierowywać wyjście do /dev/null. | |
− | + | *''' -U, --binary''' | |
− | + | Traktuje plik jako binarny. Domyślnie, w DOS-ie i MS Windows, grep zgaduje typ pliku spoglądając na zawartość pierwszych 32 kB przeczytanych z pliku. Jeśli zdecyduje, że | |
plik jest tekstowy, udziera znaki CR z oryginalnej zawartości pliku (po to żeby wyrażenia regularne z ^ i $ działały poprawnie). Podanie -U wyłącza to zgadywanie, powodując, że wszystkie pliki są czytane i przekazywane mechanizmowi dopasowywującemu dosłownie; jeśli plik jest plikiem tekstowym z parami CR/LF na końcu linii, 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. | plik jest tekstowy, udziera znaki CR z oryginalnej zawartości pliku (po to żeby wyrażenia regularne z ^ i $ działały poprawnie). Podanie -U wyłącza to zgadywanie, powodując, że wszystkie pliki są czytane i przekazywane mechanizmowi dopasowywującemu dosłownie; jeśli plik jest plikiem tekstowym z parami CR/LF na końcu linii, 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. | ||
− | + | *''' -u, --unix-byte-offsets''' | |
− | + | Raportuje offsety bajtowe w stylu Unixowym. Przełącznik ten powoduje, że grep rapor- tuje offsety bajtowe tak, jakby plik był plikiem tekstowym typu Uniksowego, tj. z udartymi znakami CR. Da to rezultaty identyczne jak uruchomienie grepa na maszynie Uniksowej. Opcja ta nie wywołuje żadnego efektu, chyba że użyto także opcji -b; nie działa na platformach innych niż MS-DOS i MS Windows. | |
− | + | *''' -V, --version''' | |
− | + | Wypisuje numer wersji grepa na standardowe wyjście błędów. Ów numer wersji powinno się załączać we wszystkich zgłoszeniach błędów (patrz niżej). | |
− | + | *''' -v, --invert-match''' | |
− | + | Odwraca sens dopasowania, wybiera linie niepasujące. | |
− | -w, --word-regexp | + | *'''-w, --word-regexp''' |
− | + | Wybiera tylko te linie, w których dopasowania wzorca tworzą całe słowa. Przeprowadzany test polega na tym, że dopasowywany podciąg musi albo znajdować się na początku linii, albo być poprzedzony znakiem nie tworzącym słowa. Podobnie, musi albo znajdować się na końcu linii, albo musi następować po nim znak nie tworzą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łej linii. | |
− | |||
− | + | *'''-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, znaku nowej linii. Opcja ta powoduje, że wyjście jest jednoznaczne, nawet przy nazwach plików zawierających niecodzienne znaki, jak znak nowej linii. Może byla wykorzystywana z poleceniami typu: find -print0, perl -0, sort -z czy xargs -0, umożliwiając przetwarzanie plików o dowolych nazwach, nawet zawierających znaki nowej linii. | |
− | + | ||
+ | === Przykład === | ||
+ | |||
wyszukaj ciąg znaków we wszystkich plikach | wyszukaj ciąg znaków we wszystkich plikach | ||
− | grep password * | + | grep password * |
wyszukaj ciąg znaków we wszystkich plikach o formacie txt | wyszukaj ciąg znaków we wszystkich plikach o formacie txt | ||
− | grep slowo *.txt | + | grep slowo *.txt |
wyszukaj ciag znaków (po spacji) | wyszukaj ciag znaków (po spacji) | ||
− | grep 'jakis ciag znakow' *.php | + | grep 'jakis ciag znakow' *.php |