Veröffentlicht 20. Mai 200322 j 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
20. Mai 200322 j Ich würde den auszuwertenden Block zuerst in eine temporäre Datei kopieren und dann den grep darauf anwenden.
20. Mai 200322 j 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
20. Mai 200322 j 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?
20. Mai 200322 j 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
20. Mai 200322 j Hallo, Grep ist dafür das falsche Tool, nimm sed: sed -n '/<Start>/,/<Ende>/{p}' Nic
21. Mai 200322 j @ nic_power Tausend Dank du hast mir sehr weiter geholfen . Nun läuft alles so wie es soll. Gruß Codon
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.