Grep

Z wiki linux-user
Skocz do: nawigacji, wyszukiwania
(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.
+
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.
+
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.
+
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.
+
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.
+
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.
+
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.
+
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).
+
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 -.
+
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.
+
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.
+
Pobiera  wzorce  z  plik, po jednym z każdej linii.  Plik pusty zawiera zero wzorców, nie pasując do niczego.
  
-G, --basic-regexp
+
*''' -G, --basic-regexp'''
Interpretuje wzorzec jako podstawowe wyrażenie regularne  (zobacz  niżej).  Jest  to zachowanie domyślne.
+
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, --with-filename'''
 +
Dla każdego dopasowania wypisuje nazwę pliku.
 
    
 
    
-h, --no-filename
+
*''' -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.
wielu plików.
+
  
--help Wypisuje krótki tekst pomocy.
 
  
-I Przetwarza plik binarny tak,  jakby  nie  zawierał  on  pasujących  danych;  jest  to
+
*'''--help'''
równoważne opcji --binary-files=without-match.
+
Wypisuje krótki tekst pomocy.
  
-i, --ignore-case
+
*''' -I'''
Ignoruje rozróżnienia w wielkości liter we wzorcu oraz w plikach wejściowych.
+
Przetwarza plik binarny tak, jakby  nie  zawierał  on  pasujących  danych;  jest  to równoważne opcji --binary-files=without-match.
  
-L, --files-without-match
+
*''' -i, --ignore-case'''
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.
+
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  wypisano  by  jakieś  wyjście.  Przeszukiwanie  zakończy  się  na  pierwszej pasującej linii.
+
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.
+
*''' --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
+
*''' -n, --line-number'''
Poprzedza każdą linię wyjścia numerem linii z odpowiedniego pliku wejściowego.
+
Poprzedza każdą linię wyjścia numerem linii z odpowiedniego pliku wejściowego.
  
-q, --quiet, --silent
+
*''' -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.
+
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
+
*''' -r, --recursive'''
Czyta  wszystkie pliki pod każdym katalogiem, rekurencyjnie; jest to równoważne opcji -d recurse.
+
Czyta  wszystkie pliki pod każdym katalogiem, rekurencyjnie; jest to równoważne opcji -d recurse.
  
-s, --no-messages
+
*''' -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.
+
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
+
*''' -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
+
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
+
*''' -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.
+
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
+
*''' -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).
+
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
+
*''' -v, --invert-match'''
Odwraca sens dopasowania, wybiera linie niepasujące.
+
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.
+
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
+
*''' -x, --line-regexp'''
Wybiera tylko te dopasowania, które dokładnie pasują do całej linii.
+
Wybiera tylko te dopasowania, które dokładnie pasują do całej linii.
  
-y Przestarzały synonim -i.
 
  
-Z, --null
+
*'''-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.
+
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.
 
   
 
   
4. PRZYKŁADY
+
 
 +
=== 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

Wersja z 10:38, 21 kwi 2012

Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Narzędzia


Sponsor serwisu

Firma informatyczna ITProjek Bydgoszcz usługi informacztyczne, serwery, linux, windows, strony www, hosting, sieci komputerowe, system archiwizacji danych