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

Alle Zeilen vor einem Spiel anzeigen?

Ich möchte alle Zeilen vor einer Übereinstimmung anzeigen, nicht nur 10 oder 7 oder 14 zum Beispiel, wie in Wie rufe ich Zeilen vor/nach dem grep-Ergebnis in bash? erklärt.

Wie kann ich es tun? Es spielt keine Rolle, ob die übereinstimmende Zeile enthalten ist oder nicht.

Zum Beispiel statt:

... | grep -B 10 -- "foo"

Ich möchte:

... | grep -B -- "foo"

Aber dieser letzte Code funktioniert nicht.

Akzeptierte Antwort:

  • Einschließlich des Spiels

    sed '/foo/q' file
    

    Es ist besser q uit sed sobald eine Übereinstimmung gefunden wird, sonst sed würde die Datei weiterlesen und Ihre Zeit verschwenden, was bei großen Dateien erheblich wäre.

  • Ohne die Übereinstimmung,

    sed -n '/foo/q;p' file
    

    Das -n Flag bedeutet, dass nur Zeilen, die den p erreichen, angezeigt werden Befehl wird gedruckt. Da die foo Zeile löst das q aus uit-Aktion erreicht es p nicht und wird daher nicht gedruckt.

    • Wenn Ihr sed GNU ist, kann dies vereinfacht werden zu

      sed '/foo/Q' file
      

Referenzen

  1. /foo/ — Adressen
  2. q , p — Häufig verwendete Befehle
  3. Q — GNU Sed erweiterte Befehle
  4. -n — Befehlszeilenoptionen

Ubuntu
  1. Alle Dateien bis zum Match anzeigen?

  2. Wie verstecke ich alle Fenster und zeige den Desktop schnell an?

  3. Kate – Alle Leerzeichen anzeigen?

  4. So löschen Sie alle Zeilen einer Datei in Vim

  5. sed Linien zusammenfügen

So zeigen Sie eine Liste aller Datenbanken in MySQL an

So zeigen Sie alle Datenbanken auf MySQL auf

Cat-Befehl zeigt die Textzeilen nicht an?

sed zum Einfügen nur bei der ersten Übereinstimmung

grep findet nur Zeilen in einem bestimmten Bereich

Löschen Sie leere Zeilen mit sed