2010-12-15 3 views
1

Meine Datei ist wie folgt:Wie drucke ich den letzten Musterbereich mit awk aus?

/beginnt Muster/
erstes Spiel
/Endmuster/

anderen Text

/beginnt Muster/
zweites Spiel
/Ende Muster/

anderer Text

/beginnen Muster/
Dieses derjenige ist, ich will
/Ende Muster/
anderen Text

auszudrucken Wie kann ich das letzte Spiel awk mit ausdrucken? Ich weiß nur, wie man all diese Übereinstimmungen ausdruckt.

Antwort

1
awk 'END { print r } 
/end pattern/ { f = x } 
/begin pattern/ { f = 1; r = x } 
f++ > 1 { r = r ? r RS $0 : $0 } 
' infile 
1

Speichern Sie das aktuelle Spiel und verwenden Sie den END-Block zum Ausdrucken:

awk '/end pattern/{flag=0} flag{m=$0} /begin pattern/{flag =1} END{print m}' file 

Dies funktioniert, wenn es nur eine Linie zwischen/beginnt Muster/und/Endmuster /.