Codon Geschrieben 20. Mai 2003 Geschrieben 20. Mai 2003 Hallo ihr Unix Profis, ich will eine LOG Datei die mein Programm schreibt auslesen lassen. Das Problem ist das ich mit grep (oder gibt es da was besseres?) einen Block auslenen will. Beispiel dum di dum dum di dum <Start> bla bla bla bla bla bla <Ende> dum di dum dum di dum Ich möchte mit grep also nur von Ende bis Start die Zeilen ausgelsen bekommen? Irgend jemand eine Idee ? Gruß Codon
P3AC3MAK3R Geschrieben 20. Mai 2003 Geschrieben 20. Mai 2003 Ich würde den auszuwertenden Block zuerst in eine temporäre Datei kopieren und dann den grep darauf anwenden.
Codon Geschrieben 20. Mai 2003 Autor Geschrieben 20. Mai 2003 Den Block will ich ja im Endeffekt genau kopieren. Aber die Datei ist 18 MB groß und mit grep will ich genau diese Blöcke finden. Gruß Codon
beko Geschrieben 20. Mai 2003 Geschrieben 20. Mai 2003 grep "bla bla" dein.log > grepausgabe.txt Damit sucht dir grep alle Zeilen raus die "bla bla" enthalten und schreibt sie in eine Datei namens grepausgabe.txt hinein. Mit ">> grepausgabe.txt" hängst du an eine eventuell vorhandene txt die neuen Zeilen an, andernfalls wird die Datei einfach überschrieben. Edit: lässt du den letzten Teil weg gibt er dir alles auf der Konsole aus. War es das was du gesucht hast?
Codon Geschrieben 20. Mai 2003 Autor Geschrieben 20. Mai 2003 Ok. Ich glaube ich habe mein Problem blöde beschrieben. Hier nochmal ein anderes Beispiel ((((((PYFE_TERMIN = ?) AND (BEFO_CODE_AB = ?)) AND (BEFO_CODE_AN = ?)) AND (BFIK_BEF_KLASSIFIK = ?)) AND (POSK_INT_EXT_KZ = ?)) AND (BMSG_NR = ?)) AND (BFSM_CODE = ?)) AND (TECH_UPDTZEIT = ?)) bind => [2003-05-20 13:58:15.0, 2003-05-20 13:58:15.0, 2003-11-13, LXR, BRU, ECO, I, 5958613.0, 449, 2003-05-20 13:57:30.0] UnitOfWork(1241948614)--Connection(1814618619)--UPDATE NUR.VBMKO001 SET TECH_UPDT_ZEIT_DLG = ?, TECH_UPDTZEIT = ? WHERE ((((((((PYFE_TERMIN = ?) AND (BEFO_CODE_AB = ?)) AND (BEFO_CODE_AN = ?)) AND (BFIK_BEF_KLASSIFIK = ?)) AND (POSK_INT_EXT_KZ = ?)) AND (BMSG_NR = ?)) AND (BFSM_CODE = ?)) AND (TECH_UPDTZEIT = ?)) <Start> Das sind die Sachen die ich gerne in einem anderen Log hätte. Die Anzahl der Zeilen ist verschieden <Ende> bind => [2003-05-20 13:58:15.0, 2003-05-20 13:58:15.0, 2003-11-13, LXR, BRU, ECO, I, 5958613.0, 448, 2003-05-20 13:57:30.0] UnitOfWork(1241948614)--Connection(1814618619)--UPDATE NUR.VBMKO001 SET TECH_UPDT_ZEIT_DLG = ?, TECH_UPDTZEIT = ? WHERE ((((((((PYFE_TERMIN = ?) AND (BEFO_CODE_AB = ?)) AND (BEFO_CODE_AN = ?)) AND (BFIK_BEF_KLASSIFIK = ?)) AND (POSK_INT_EXT_KZ = ?)) AND (BMSG_NR = ?)) AND (BFSM_CODE = ?)) AND (TECH_UPDTZEIT = ?)) In das andere File will ich per grep also: <Start> Das sind die Sachen die ich gerne in einem anderen Log hätte. Die Anzahl der Zeilen variert <Ende> kopieren. Danke für eure Hilfe. Gruß Codon
nic_power Geschrieben 20. Mai 2003 Geschrieben 20. Mai 2003 Hallo, Grep ist dafür das falsche Tool, nimm sed: sed -n '/<Start>/,/<Ende>/{p}' Nic
Codon Geschrieben 21. Mai 2003 Autor Geschrieben 21. Mai 2003 @ nic_power Tausend Dank du hast mir sehr weiter geholfen . Nun läuft alles so wie es soll. Gruß Codon
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden