GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Nur das erste Vorkommen nur mit Grep finden?

Angenommen, ich habe eine Datei mit vielen Wörtern, ich 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, in der es passt. Ich brauche nur den Befehl grep.

Akzeptierte Antwort:

Standardmäßig grep druckt die Linien Übereinstimmung mit einem Muster, also wenn das Muster einmal oder mehrmals in einer Zeile vorkommt, grep druckt diese ganze Zeile.

Hinzufügen des Flags -m 7 wird grep mitteilen um nur die ersten 7 Zeilen zu drucken, wo das Muster erscheint.

Das sollte also tun, was Sie wollen (ich habe es nicht getestet):

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

Bearbeiten:Wie von @Kusalananda hervorgehoben, benötigen Sie den -m nicht unbedingt Flag, aber es zu verwenden bedeutet grep muss nicht die gesamte Datei parsen und gibt das Ergebnis schneller aus, insbesondere wenn myfile ist eine große Datei.


Linux
  1. Mehrzeiliger Musterabgleich mit Sed, Awk oder Grep?

  2. Grep – Warum entfernen Klammern im Grep-Muster den Grep-Prozess aus Ps-Ergebnissen?

  3. Finden Sie die Zeilennummer, die das Muster enthält, mit benutzerdefiniertem Regex-Trennzeichen?

  4. Sed:Nur das erste Auftreten einer Musterübereinstimmung drucken?

  5. Wie suche ich in bestimmten Dateien, die einem Muster entsprechen?

Lösen Sie Wordle über die Linux-Befehlszeile

So führen Sie eine Mustersuche in Dateien mit Grep durch

So finden Sie Dateien über die Befehlszeile im Linux-Terminal

Verwenden des GREP-Befehls unter Linux mit Beispielen

Finden Sie Text in Dateien unter Linux mit grep

Verwenden von grep vs. awk