Wie man den ersten Treffer druckt und mit grep stoppt

Wie man den ersten Treffer druckt und mit grep stoppt

grep ist ein Suchdienstprogramm in Linux, das für den Inhaltsabgleich verwendet wird. Standardmäßig wird jede übereinstimmende Zeile gedruckt, was eine Menge Ausgaben erfordern kann. Wenn Sie nur am ersten Treffer interessiert sind, können Sie die Ausgabe nur auf die erste Zeile beschränken.

Begrenzung der Ausgabe mit grep -m

Der Befehl grep hat eine -m or  -Option --max-count , die dieses Problem möglicherweise löst, aber möglicherweise nicht wie erwartet funktioniert.

Diese Option grep stoppt die Übereinstimmung, nachdem N übereinstimmende Zeichenfolgen gefunden wurden, was hervorragend funktioniert, da es die Ausgabe auf eine einzelne Zeichenfolge begrenzt, die immer die erste Übereinstimmung enthält. Wir können dies mit einem -n Flag testen, um Zeilennummern zu drucken.

grep -m 1 "foo"file

Dies hat jedoch einige Nachteile, die Sie beachten sollten. Es hört nicht nach N Übereinstimmungen auf, sondern nach N Zeilen. Dies führt grep zu mehreren Übereinstimmungen in jeder Zeile, was ein Problem sein kann, wenn es mit einem -o Flag verwendet wird, das jede Übereinstimmung in einer neuen Zeile ausgibt.

Außerdem sind es nur N Zeilen pro Datei, sodass bei Verwendung mit mehreren Dateien die erste übereinstimmende Zeile für jede Datei gedruckt wird.

Verwendung von head zur Begrenzung der grep-Ausgabe

Eine Alternative besteht darin, die Ausgabe an einen anderen Befehl headweiterzuleiten, der die Eingabe einfach nach N Zeilen abschneidet. Es ist jedoch immer noch ein kleiner Vorteil, -m 1 da grep es die Verarbeitung großer Dateien stoppt, wenn eine Übereinstimmung früh gefunden wird.

grep "foo"file_one.txt | head -1

Dies funktioniert mit einem -o Flag, um nur die erste Übereinstimmung zu drucken, auch wenn es mehrere Übereinstimmungen in der Datei gibt:

Seien Sie jedoch vorsichtig, wenn Sie dies mit mehreren Dateien verwenden. Die Verwendung head druckt die erste übereinstimmende Zeile in jeder Datei. Dies kann ein Problem sein, da die grep Ausgabe in der Reihenfolge gedruckt wird, in der die Dateien verarbeitet werden, und Sie die Reihenfolge, in der die Dateien verarbeitet werden, möglicherweise nicht kennen, es sei denn, Sie sortieren sie manuell, bevor Sie sie an übergeben grep.

Ebenso können Sie auch tail mit die letzte übereinstimmende Zeile drucken.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert