So unterdrücken Sie den Abgleich von Binärdateien in grep [geschlossen]
215
Bei Verwendung grepunter Linux enthält das Ergebnis häufig viele "XXX-Übereinstimmungen für Binärdateien", die mir egal sind. Wie kann man diesen Teil der Ergebnisse unterdrücken oder Binärdateien in grep ausschließen?
@skwllsp Bei -l enthalten die Ergebnisse jedoch nicht die übereinstimmende Zeile, sondern nur den übereinstimmenden Dateinamen.
RandyTek
Es gibt eine Option für Zeilen: grep -I -n -H
6
Das ist nicht zum Thema? Wow
CoffeeTableEspresso
Antworten:
301
Es gibt drei Optionen, die Sie verwenden können. -Iist, Binärdateien in grep auszuschließen. Andere sind für Zeilennummern und Dateinamen.
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
Dies könnte also eine Möglichkeit sein, grep auszuführen:
Ich würde verwenden, -Irnwo rfür rekursiv steht, um in alle Ordner zu schauen. Hist hier exsessiv
vladkras
@vladkras, "H ist hier exsessiv" - du meinst redundant, dh es ist bereits die Standardeinstellung?
cp.engr
Vielen Dank, dass Sie klargestellt haben, was die kurzen Optionen in Ihrer Antwort bedeuten. Es gibt so viele knappe Linux-Befehlsantworten auf SO, die keine Erklärung geben, was ich ärgerlich finde.
Jrahhali
1
@AaronFranke: Das -nFlag weist grep an, die Zeilennummern der Dateien zu melden, in denen eine Übereinstimmung gefunden wurde. "1-basiert" bedeutet, dass die Zeilenzählung eher bei Eins als bei Null beginnt, wie dies bei der Programmierung häufig der Fall ist. Also, wenn die erste Zeile der Datei mit dem Namen example.txtist Hello, world, ist die zweite Zeile Hello catund die dritte Zeile cats are cool, dann die Suche nach „Katze“ über grep -n cat example.txt, würden Sie bekommen example.txt:2: Hello catund example.txt:3: cats are cool.
Jvriesem
11
Dies ist eine alte Frage, die beantwortet wurde, aber ich dachte, ich würde die Option --binary-files = text hier für jeden einfügen, der sie verwenden möchte. Die Option -I ignoriert die Binärdatei. Wenn Sie jedoch möchten, dass grep die Binärdatei als Textdatei behandelt, verwenden Sie --binary-files = text wie folgt:
Antworten:
Es gibt drei Optionen, die Sie verwenden können.
-I
ist, Binärdateien in grep auszuschließen. Andere sind für Zeilennummern und Dateinamen.Dies könnte also eine Möglichkeit sein, grep auszuführen:
quelle
-Irn
wor
für rekursiv steht, um in alle Ordner zu schauen.H
ist hier exsessiv-n
Flag weist grep an, die Zeilennummern der Dateien zu melden, in denen eine Übereinstimmung gefunden wurde. "1-basiert" bedeutet, dass die Zeilenzählung eher bei Eins als bei Null beginnt, wie dies bei der Programmierung häufig der Fall ist. Also, wenn die erste Zeile der Datei mit dem Namenexample.txt
istHello, world
, ist die zweite ZeileHello cat
und die dritte Zeilecats are cool
, dann die Suche nach „Katze“ übergrep -n cat example.txt
, würden Sie bekommenexample.txt:2: Hello cat
undexample.txt:3: cats are cool
.Dies ist eine alte Frage, die beantwortet wurde, aber ich dachte, ich würde die Option --binary-files = text hier für jeden einfügen, der sie verwenden möchte. Die Option -I ignoriert die Binärdatei. Wenn Sie jedoch möchten, dass grep die Binärdatei als Textdatei behandelt, verwenden Sie --binary-files = text wie folgt:
quelle