Eingangstextdatei:Extrahieren zwischen zwei Mustern in sed
#END
this should not be extracted
#BEGIN
This should be extracted.
#BEGIN
keep going..
These lines should be extracted by our script.
Everything here will be copied.
#END
That should be all.
#BEGIN
Nothing from here.
#END
gewünschte Ausgabe:
This should be extracted.
#BEGIN
keep going..
These lines should be extracted by our script.
Everything here will be copied.
Mein sed-Skript ist:
/#BEGIN/,/#END/!d
/#END/q
/#BEGIN/,/#END/{/#BEGIN/d;/#END/d;p;}
Mein Skript kann das meiste, was ich möchte es tun, außer die erste #END zu ignorieren und zu drucken, was auch immer in dem ersten # BEGIN # END Block (einschließlich der verschachtelten # BEGIN) ist. Ich bin mir nicht sicher, wie ich mein Skript ändern kann, um diese Einschränkungen zu erfüllen.
Das funktioniert gut, außer wenn ich die Zeile hatte: "Es gibt keine # ENDE Zeile, um den Druck zu beenden" in meiner Eingabe, dieses Skript druckt diese Zeile nicht. Es sollte alle #END oder #BEGIN ignorieren, die nicht das erste Wort (Spalte) eines Satzes sind. – asddddddaaaad2
@ asdddddaaaad2 sed bearbeiten – potong
Danke, das funktioniert! Nur damit ich es besser verstehe - was macht das "! B"? Ich bin mir nicht sicher, was "b" in sed ist. Vielen Dank. – asddddddaaaad2