Podczas używania grep
w systemie Linux wynik często zawiera wiele „dopasowań pliku binarnego XXX”, na których mnie to nie obchodzi. Jak ukryć tę część wyników lub jak wykluczyć pliki binarne w grep?
Podczas używania grep
w systemie Linux wynik często zawiera wiele „dopasowań pliku binarnego XXX”, na których mnie to nie obchodzi. Jak ukryć tę część wyników lub jak wykluczyć pliki binarne w grep?
Odpowiedzi:
Istnieją trzy opcje, których możesz użyć. -I
jest wykluczenie plików binarnych w grep. Inne dotyczą numerów linii i nazw plików.
grep -I -n -H
-I -- process a binary file as if it did not contain matching data;
-n -- prefix each line of output with the 1-based line number within its input file
-H -- print the file name for each match
Może to być sposób na uruchomienie grep:
grep -InH your-word *
-Irn
gdzie r
oznacza rekurencję, aby zajrzeć do wszystkich folderów. H
jest tutaj wyjątkowo
-n
Flaga informuje grep, aby zgłosił numery wierszy plików, w których znalazł dopasowanie. „1-oparty” oznacza, że liczenie linii zaczyna się od jednego, a nie od zera, jak to często się dzieje w programowaniu. Tak więc, jeśli pierwszy wiersz o nazwie pliku example.txt
to Hello, world
, drugi wiersz to Hello cat
, a trzeci wiersz to cats are cool
, a następnie wyszukanie „cat” przez grep -n cat example.txt
, otrzymasz example.txt:2: Hello cat
i example.txt:3: cats are cool
.
To stare pytanie, na które udzielono odpowiedzi, ale pomyślałem, że umieszczę tutaj opcję --binary-files = text dla każdego, kto chce z niej skorzystać. Opcja -I ignoruje plik binarny, ale jeśli chcesz, aby grep traktował plik binarny jako plik tekstowy, użyj --binary-files = tekst tak:
bash$ grep -i reset mediaLog*
Binary file mediaLog_dc1.txt matches
bash$ grep --binary-files=text -i reset mediaLog*
mediaLog_dc1.txt:2016-06-29 15:46:02,470 - Media [uploadChunk ,315] - ERROR - ('Connection aborted.', error(104, 'Connection reset by peer'))
mediaLog_dc1.txt:ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
bash$