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 head
weiterzuleiten, 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