Ich benutze das
cat foo.txt | sed '/bar/d'
um Zeilen zu entfernen, die den String bar
enthalten in der Datei.
Ich möchte jedoch diese Zeilen und die Zeile direkt danach entfernen . Vorzugsweise in sed
, awk
oder ein anderes Tool, das in MinGW32 verfügbar ist.
Es ist eine Art Umkehrung dessen, was ich in grep
bekommen kann mit -A
und -B
um übereinstimmende Zeilen sowie Zeilen vor/nach der übereinstimmenden Zeile zu drucken.
Gibt es einen einfachen Weg, dies zu erreichen?
Akzeptierte Antwort:
Wenn Sie GNU sed haben (also nicht eingebettetes Linux oder Cygwin):
sed '/bar/,+1 d'
Wenn Sie bar
haben in zwei aufeinanderfolgenden Zeilen wird die zweite Zeile gelöscht, ohne sie zu analysieren. Wenn Sie beispielsweise eine 3-zeilige Datei bar
haben /bar
/foo
, der foo
Linie bleibt.