Veröffentlicht 14. Juli 200817 j Hiho Mein erster Post und schon gleich eine Frage...ich hoffe ich werd deshalb nicht erschlagen ;D Ich fummmel mir gerade mein erstes Bashscript zurecht und wollte einige Zeilenumbrüche mit "sed" aus einer Logdatei rausfiltern. Die sieht ungefähr so aus: Datum: 07/14/08 Inspizierte Dateien: 41,554 backed up 25 updated: 0 rebound: 0 deleted: 0 expired: 0 Failed: 0 transferred: 7.82 damit mache ich dann: sed -e 'N;s/\n/ /g' /var/log/ausgabeLOG > ergebnis1elf Das Ergebnis sieht aber leider nicht so aus wie ich es gerne hätte: Datum: 07/14/08 Inspizierte Dateien: 41,554 backed up 25 updated: 0 rebound: 0 deleted: 0 expired: 0 Failed: 0 transferred: 7.82 Er entfernt also nicht alle Zeilenumbrüche. Gibts eine Möglichkeit alle auf einen Schlag zu entfernen, oder muss ich den Befehl wirklich mehrmals ausführen ? Wenn ich noch 2 mal das selbe mache habe ich mein gewünschtes Ergebnis, aber das muss auch eleganter und einfacher gehen... Ich bin nicht ganz sicher wie sed damit umgeht und habe auf die schnelle auch keine Lösung "ergoogln" können *flöt* Danke im Vorraus Nava
14. Juli 200817 j Hi, muss es sed sein oder geht auch ... tr '\012' ' ' < /var/log/ausgabeLOG > ergebnis1elf ? ciao, vic
14. Juli 200817 j Ich bin nicht ganz sicher wie sed damit umgeht und habe auf die schnelle auch keine Lösung "ergoogln" können *flöt* Das sieht ganz danach aus, als wenn sed das zeilenweise macht. Aber nachdem ein Zeilenumbruch entfernt wurde, rückter der nächste ja eine Zeile höher (in die Zeile die gerade bearbeitet wurde), wird also ausgelassen. Lösung hab ich jetzt auf die Schnelle auch keine, du solltest das halt von hinten machen. Oder die Datei Zeilenweise einlesen und dann zu sed pipen jede Zeile.
14. Juli 200817 j Hi, beim sed muss man mit einer loop arbeiten, sowas wie ... sed -e ':loop N s/\n/ /g bloop ' ... aber dafür würde ich persönlich nicht sed nehmen. ciao, vic
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.