finde nur das erste Vorkommen, indem du nur grep verwendest

finde nur das erste Vorkommen, indem du nur grep verwendest

Angenommen, ich habe eine Datei mit vielen Wörtern und möchte nur das erste Wort mit dem Muster „xyz“ finden. Wie mache ich das, wenn mehrere Wörter mit diesem Muster in derselben Zeile stehen? -mGibt alle Wörter in der ersten Zeile zurück, mit denen es übereinstimmt. Ich brauche nur den Befehl grep.

Antwort1

Standardmäßig grepdrucktLinienÜbereinstimmung mit einem Muster, d. h. wenn das Muster ein- oder mehrmals in einer Zeile vorkommt, grepwird die ganze Zeile gedruckt.

Durch Hinzufügen der Flagge -m 7werden grepnur die ersten 7 Zeilen gedruckt, in denen das Muster erscheint.

Das hier sollte also das gewünschte Ergebnis liefern (ich habe es nicht getestet):

grep -o -m 1 xyz myfile | head -1

Bearbeiten: Wie @Kusalananda anmerkt, brauchen Sie das -mFlag nicht unbedingt, aber wenn Sie es verwenden, grepmüssen Sie nicht die ganze Datei analysieren und das Ergebnis wird schneller ausgegeben, insbesondere wenn myfilees sich um eine große Datei handelt.

Antwort2

Die Antwort auf Ihre Frage finden Sie auf der Manpage von grep:

grep -m1 'searchstring' file_name

Die -m<number>Option ist der Schlüssel. -m1Es werden nur die erste Übereinstimmung, -m2die ersten beiden Vorkommen usw. angezeigt.

verwandte Informationen