ich die Zeilen in text.txt haben, wie unten:Fund Linien zwischen zwei Mustern sed Verwendung
blah blah..
blah abc blah..
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah blah..
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah blah..
blah efg blah blah
blah blah..
blah blah..
ich die Linien zwischen jedem letzten Vorkommen von „abc“ vor „efg“ und „efg“ ausgegeben werden soll , für das obige Beispiel, ich möchte Ausgabe:
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah abc blah
blah blah..
blah efg blah blah
ich weiß, sed Bereiche mit zwei Mustern auswählen können, wie:
sed -n '/abc/,/efg/p' test.txt
Howeve r die Ausgabe von dem ersten Auftreten von „abc“ anstelle dem letzten beginnt, ist die Ausgabe wie folgt:
blah abc blah..
blah abc blah
blah blah..
blah blah..
blah blah..
blah efg blah blah
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah abc blah
blah blah..
blah efg blah blah
Jede Erweiterung kann ich auf der Kommandozeile zu tun, so dass die Ausgabe von einem letzten Auftreten beginnen von "abc"?
ich einige suchen, dies zu verstehen hat, korrigiert mich wenn ich falsch liege: 1, entkam spitzen Klammern optional sind, die darauf hindeuten, was wir suchen denn es sind Worte. In Fig. 2 bedeutet "h" -Befehl das Speichern des Musterraums in den Haltepuffer, "H" bedeutet das Anfügen des Musterraums in den Haltepuffer, "x" bedeutet das Austauschen des Musterraums und des Haltepuffers. 3, der gesamte Befehl wird zunächst die Bereiche beginnend mit der ersten Zeile enthält "abc" und endet mit der folgenden ersten Zeile enthält "efg", und dann in jedem Bereich finden Sie die letzte Zeile enthalten "abc", und speichern Sie die folgenden Zeilen bis die Zeile 'efg' enthält, und drucken sie – poiu2000
danke @potong für eine solche gute Lösung – poiu2000