Ich muss "Tabellen" aus großen Protokolldateien extrahieren. Eine Tabelle wird durch eine Linie begrenzt, die enthält:Extrahieren Sie Linien zwischen zwei wiederholten Mustern
IMPRESSION DE LA TABLE TSTR
und vom 4. Auftreten dieser Zeile:
--------- ---------------------------------------------------------------
ich nicht eine genauere Definition meiner Tabelle finden.
Als Beispiel meine Protokolldatei enthält:
SOME
TEXT
BEFORE
IMPRESSION DE LA TABLE TSTR 1323
--------- ---------------------------------------------------------------
POSITION | INDICE | ARGUMENT
--------- ---------------------------------------------------------------
| TYPE | VALEUR | TYPE | VALEUR
--------- ---------------------------------------------------------------
1 | CHAINE | COMPTEUR1 | ENTIER | 0
2 | CHAINE | COMPTEUR2 | ENTIER | 0
3 | CHAINE | RHO_1 | TABLE | 5187
4 | CHAINE | RHO_2 | TABLE | 6029
--------- ---------------------------------------------------------------
ANY
OTHER
TEXT
FOLLOWS
Und ich würde bekommen:
IMPRESSION DE LA TABLE TSTR 1323
--------- ---------------------------------------------------------------
POSITION | INDICE | ARGUMENT
--------- ---------------------------------------------------------------
| TYPE | VALEUR | TYPE | VALEUR
--------- ---------------------------------------------------------------
1 | CHAINE | COMPTEUR1 | ENTIER | 0
2 | CHAINE | COMPTEUR2 | ENTIER | 0
3 | CHAINE | RHO_1 | TABLE | 5187
4 | CHAINE | RHO_2 | TABLE | 6029
--------- ---------------------------------------------------------------
Ich fand Ideen an:
How to select lines between two patterns?
Extract lines between two patterns from a file
Aber keiner von ihnen ermöglicht das Finden des n-ten Vorkommens eines Musters.
Beachten Sie auch, dass ich andere Tabellen in meiner Datei (mit anderen Namen) habe, die ich nicht extrahieren möchte.
großen Werke haben, falls ich keinen anderen Tisch vor . Aber das Muster "------" wird mehrere Male gefunden, bevor die gewünschte Tabelle erreicht wird, also scheint es, dass der Zähler dann nutzlos ist. – Simpom
OK gelöst: Ich setze c = 0, wenn "IMPRESSION ..." gefunden wird. – Simpom
Am Anfang habe ich vergessen, c auf 0 zu setzen. Aber jetzt sollte es mit mehreren funktionieren. Ich habe es versucht, indem ich deine vier Mal in eine Datei kopiert habe. – JFS31