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

Sed Einzeiler, um alles zwischen zwei Klammern zu löschen?

Ich arbeite mit einem Text, der voller Dinge zwischen Klammern [] ist, die ich nicht möchte. Da ich die Klammern selbst löschen kann, brauche ich dafür keinen Einzeiler, aber ich brauche einen Einzeiler, der alles dazwischen entfernt.

Was ist mit Klammern () anstelle von Klammern?

Akzeptierte Antwort:

Ersetzen Sie [some text] durch die leere Zeichenfolge. Angenommen, Sie möchten keine verschachtelten Klammern parsen, der some text darf keine Klammern enthalten.

sed -e 's/[[^][]*]//g'

Beachten Sie, dass im Klammerausdruck [^][] etwas anderes als [ zu finden oder ] , der ] muss zuerst kommen. Normalerweise ein ] würde den Zeichensatz beenden, aber wenn es das erste Zeichen im Satz ist (hier nach dem ^ Ergänzungszeichen), das ] steht für sich.

Wenn Sie verschachtelte Klammern analysieren möchten oder der Text in Klammern mehrere Zeilen umfassen kann, ist sed nicht das richtige Werkzeug.


Linux
  1. Wert zwischen zwei Suchmustern in derselben Zeile extrahieren?

  2. Sed:Alle Vorkommen einer Zeichenfolge außer der ersten löschen?

  3. Unterschiede zwischen Sed auf Mac Osx und anderen „Standard“-Sed?

  4. Entfernt Vorkommen von Zeichenketten in Textdatei

  5. Löschen Sie Leerzeichen in jedem Zeilenanfang der Datei mit bash

So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk

Blackslash in Sed entkommen?

Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

Einzeiler vs. Drehbuch?

Alles zwischen dem zweit- und zweitletzten Auftreten der Übereinstimmung entfernen?

Unix Sed Tutorial:Löschen Sie Dateizeilen mit Adresse und Mustern