Ich habe gekämpft, um herauszufinden, wie Zeilen in einer Protokolldatei (mit 2 Zeilentrennzeichen - '@' und '|') "getrennt" werden, so dass alle Zeilen mit einem Zeitstempel verbunden sind eine Linie.Merge-Linien basierend auf Muster
Example:
2016-03-22 blah blah blah
|blah blah
|blah blah blah
@blah
|blah blah blah
2016-03-22 blah blah blah
|blah blah blah
@blah blah
@blah blah blah
|blah
erforderliche Ausgabe
2016-03-22 blah blah blah |blah blah |blah blah blah @blah |blah blah blah
2016-03-22 blah blah blah |blah blah blah @blah blah @blah blah blah |blah
Ich dachte, ich hätte diese sussed einfach durch xarg mit alles auf eine Zeile setzen dann sed mit neuen Linien bei 2016 hinzufügen, aber ich entdeckte, gibt es eine Grenze auf Zeichen In einer Zeile und die Protokolldatei ist so groß, dass xargs mehrere Zeilen erstellt hat.
Entfernen des Wagenrücklaufs von Zeilen, die mit | beginnen und @ würde das lösen, aber ich kann mir auch nicht vorstellen, wie das geht.
Ich habe hier gesucht und ein paar Leute gefunden, die ähnliche Fragen stellen, aber ich kann einige der Lösungen nicht interpretieren, die zu meinem Problem passen, da ich sed/awk/xargs nicht gut genug kenne.
Ich würde mich freuen, wenn jemand einige Vorschläge anbieten kann.
Dank
Sie verbringen Stunden damit, ein Problem nicht zu lösen. Du postest dann eine Frage. 5 Minuten später finden Sie die Lösung! 'cat datei | sed ': a; N; $! Ba; s/\ n// g' | sed 's/2016 -/\ n2016-/g'' – Gareth
Datei als Antwort und erkläre es . –