Ich muss 81 Zeilen nach jedem Auftreten des Ausdrucks "AAA" aus meiner Eingabedatei drucken. Wie gehe ich da vor?
Die folgenden Idiome beschreiben, wie ein Bereich von Datensätzen ausgewählt wird ein passendes Muster:
a) Drucken Sie alle Datensätze aus einem Muster:
%Vor%b) Alle Datensätze nach einem Muster drucken:
%Vor%c) Drucken Sie den N-ten Datensatz nach einem Muster:
%Vor%d) Drucken Sie jeden Datensatz mit Ausnahme des N-ten Datensatzes nach einem Muster:
%Vor%e) Drucken Sie die N Datensätze nach einem Muster:
%Vor%f) Drucken Sie alle Datensätze mit Ausnahme der N Datensätze nach einem Muster:
%Vor%g) Drucken Sie die N Datensätze aus einem Muster:
%Vor%Ich änderte den Variablennamen von "f" für "gefunden" zu "c" für "Zählung" wo geeignet, da dies mehr ausdrückt, was die Variable tatsächlich ist.
Sie möchten also "e" oben:
%Vor%Es gibt eine ziemlich direkte Möglichkeit, dies mit grep zu tun:
%Vor%Von der Manpage:
-A NUM, --nachher Kontext = NUM
Drucken Sie NUM Zeilen des nachträglichen Kontexts nach übereinstimmenden Zeilen. Platziert eine Zeile mit einem Gruppentrennzeichen (-) zwischen aufeinander folgenden Übereinstimmungsgruppen. Mit der Option -o oder --only-matching hat dies keine Auswirkung und es wird eine Warnung ausgegeben.
Zum Drucken der übereinstimmenden Zeile und die folgenden 81 Zeilen:
%Vor%Um die folgenden 81 Zeilen zu drucken, aber nicht die übereinstimmende Zeile:
%Vor%Tags und Links regex perl pattern-matching sed awk