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?
-m
Gibt alle Wörter in der ersten Zeile zurück, mit denen es übereinstimmt. Ich brauche nur den Befehl grep.
Antwort1
Standardmäßig grep
drucktLinienÜbereinstimmung mit einem Muster, d. h. wenn das Muster ein- oder mehrmals in einer Zeile vorkommt, grep
wird die ganze Zeile gedruckt.
Durch Hinzufügen der Flagge -m 7
werden grep
nur 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 -m
Flag nicht unbedingt, aber wenn Sie es verwenden, grep
müssen Sie nicht die ganze Datei analysieren und das Ergebnis wird schneller ausgegeben, insbesondere wenn myfile
es 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. -m1
Es werden nur die erste Übereinstimmung, -m2
die ersten beiden Vorkommen usw. angezeigt.