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

Wie man nach einem bestimmten Wort sucht und Text greift

Sie könnten -B1 verwenden um auch die vorherige Zeile zu drucken und dann nur die erste Zeile zu greifen:

$ grep -B1 'Minion' ip.txt
T5F6Z12:
   Minion did not return. [Not connected]
$ grep -B1 'Minion' ip.txt | head -n1
T5F6Z12:

Oder machen Sie es mit awk :

$ awk '/Minion/{print p} {p=$0}' ip.txt
T5F6Z12:
$ awk '/Minion/{sub(/:$/, "", p); print p} {p=$0}' ip.txt
T5F6Z12

Hier p speichert immer die letzte Zeile. Wenn die Eingabezeile Minion enthält , dann wird es gedruckt. Beachten Sie, dass dies im Gegensatz zu grep für mehrere Übereinstimmungen funktioniert obige Lösung, die nur die erste Übereinstimmung liefert.


Wenn Sie an grep gebunden sind dann könnten Sie mehrzeilige Übereinstimmungen pflegen ...

Datei:

T5F6Z12:
   Minion did not return. [Not connected]
T5F6Z11:
   Pinion did return. [connected]
T5F6Z10:
   Minion did not return. [Not connected]

Verwenden von

grep -B 1 "Minion" file | grep ":$"
T5F6Z12:
T5F6Z10:

Wenn Sie sed verwenden können dann gibt es hier in U&L eine Antwort, die ich unten plagiiert habe

sed -n '/Minion/{x;p;d;}; x' file
T5F6Z12:
T5F6Z10:

Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. Linux – Wie kann man nach einem bestimmten Wort suchen und Text greifen?

  3. Wie man in Putty kopiert und einfügt

  4. Linux sucht nach Wort und zeigt ganze Zeile

  5. Wie man nach dem genauen Wort sucht, wenn die Zeichenfolge einen Punkt enthält

So finden Sie eine bestimmte Zeichenfolge oder ein bestimmtes Wort in Dateien und Verzeichnissen

So zählen Sie Wortvorkommen in einer Textdatei

Wie man nach mehreren Zeichenfolgen und Mustern grep

So sichern und wiederherstellen Sie eine SD-Karte für Raspberry Pi

So finden und löschen Sie Dateien, die einen bestimmten Text in ihrem Namen in Linux enthalten

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei