Einfach benutzen cat
(wenn du Katzen magst ;-)) und paste
:
cat file.in | paste -d, - - > file.out
Erläuterung: paste
Liest aus einer Reihe von Dateien und fügt die entsprechenden Zeilen zusammen (Zeile 1 aus der ersten Datei mit Zeile 1 aus der zweiten Datei usw.):
paste file1 file2 ...
Anstelle eines Dateinamens können wir -
(Bindestrich) verwenden. paste
Nimmt die erste Zeile von file1 (das ist stdin). Dann möchte es die erste Zeile aus Datei2 lesen (die auch stdin ist). Da jedoch die erste stdin-Zeile bereits gelesen und verarbeitet wurde, wartet nun auf den Eingabestream die zweite stdin-Zeile, die paste
glücklich mit der ersten zusammenklebt. Die -d
Option setzt das Trennzeichen als Komma und nicht als Tabulator.
Alternativ dazu tun
cat file.in | sed "N;s/\n/,/" > file.out
PS Ja, man kann das oben genannte vereinfachen
< file.in sed "N;s/\n/,/" > file.out
oder
< file.in paste -d, - - > file.out
Das hat den Vorteil, nicht zu verwenden cat
.
Ich habe dieses Idiom jedoch aus Gründen der Klarheit nicht absichtlich verwendet - es ist weniger ausführlich und ich mag es cat
(CATS ARE NICE). Also bitte nicht bearbeiten.
Wenn Sie das Einfügen Katzen vorziehen (Einfügen ist der Befehl, um Dateien horizontal zu verketten, während Katze sie vertikal verkettet), können Sie Folgendes verwenden:
paste file.in | paste -d, - -