Zeilen paarweise zusammenfügen

Aus Bluelupo's Wiki
Wechseln zu: Navigation, Suche

Oftmals hat man das Problem zwei Zeilen die nacheinander in zwei getrennten Zeilen stehen, in eine Zeile zusammen zufassen. Dazu ist das sed Kommandozeilen sehr gut geeignet.

Am Beispiel dieser Ausgabe aus der Datei /var/log/apt/history.log sieht man die Problematik deutlich. Start-Date- und Commandline-Zeilen folgen immer aufeinander. Übersichtlich wäre es, wenn die Ausgabe in einer Zeile erfolgen könnte.

# egrep '^(Start-Date:|Commandline:)' /var/log/apt/history.log
Start-Date: 2015-01-07  17:21:10
Commandline: apt-get dist-upgrade
Start-Date: 2015-01-07  22:09:11
Commandline: apt-get remove --purge --yes linux-headers-3.17-4.towo-siduction-amd64 linux-image-3.17-4.towo-siduction-amd64
Start-Date: 2015-01-07  22:09:25
Commandline: apt-get remove --purge --yes linux-headers-3.18-0.towo-siduction-amd64 linux-image-3.18-0.towo-siduction-amd64

Der Ausdruck des sed Befehls erledigt dies.

# egrep '^(Start-Date:|Commandline:)' /var/log/apt/history.log | sed '$!N;s/\n/ /'
Start-Date: 2015-01-07  17:21:10 Commandline: apt-get dist-upgrade
Start-Date: 2015-01-07  22:09:11 Commandline: apt-get remove --purge --yes linux-headers-3.17-4.towo-siduction-amd64 linux-image-[...]
Start-Date: 2015-01-07  22:09:25 Commandline: apt-get remove --purge --yes linux-headers-3.18-0.towo-siduction-amd64 linux-image-[...]