Druck spezifische Anzahl von Zeilen nach dem Muster

8

Ich muss 81 Zeilen nach jedem Auftreten des Ausdrucks "AAA" aus meiner Eingabedatei drucken. Wie gehe ich da vor?

    
user2517597 24.06.2013, 19:31
quelle

5 Antworten

20

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%     
Ed Morton 24.06.2013 20:42
quelle
7

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.

    
Andrew Clark 24.06.2013 19:36
quelle
6

Fügen Sie {c=81;next}c-->0 nach Ihrem Ausdruck hinzu:

%Vor%     
dav 24.06.2013 19:36
quelle
5

Zum Drucken der übereinstimmenden Zeile und die folgenden 81 Zeilen:

%Vor%

Um die folgenden 81 Zeilen zu drucken, aber nicht die übereinstimmende Zeile:

%Vor%     
Zero Piraeus 24.06.2013 19:41
quelle
4

Code für GNU :

%Vor%     
captcha 24.06.2013 22:22
quelle

Tags und Links