Eine geringfügige Abweichung von der Antwort von Glenn Jackman mit paste
: Wenn der Wert für die -d
Trennzeichenoption mehr als ein Zeichen enthält, paste
werden die Zeichen einzeln durchlaufen und in Kombination mit den -s
Optionen weiterhin ausgeführt, während dieselbe Eingabedatei verarbeitet wird.
Dies bedeutet, dass wir alles, was wir wollen, als Trennzeichen und die Escape-Sequenz verwenden können \n
, um zwei Zeilen gleichzeitig zusammenzuführen.
Komma verwenden:
$ paste -s -d ',\n' infile
KEY 4048:1736 string,3
KEY 0:1772 string,1
KEY 4192:1349 string,1
KEY 7329:2407 string,2
KEY 0:1774 string,1
und das Dollarzeichen:
$ paste -s -d '$\n' infile
KEY 4048:1736 string$3
KEY 0:1772 string$1
KEY 4192:1349 string$1
KEY 7329:2407 string$2
KEY 0:1774 string$1
Dies kann nicht verwendet werden, indem ein Trennzeichen verwendet wird, das aus mehreren Zeichen besteht.
Als Bonus paste
ändert dies nicht die neue Zeile der letzten Zeile in der Datei , wenn POSIX-kompatibel ist, also für eine Eingabedatei mit einer ungeraden Anzahl von Zeilen wie
KEY 4048:1736 string
3
KEY 0:1772 string
paste
wird das Trennungszeichen in der letzten Zeile nicht anheften:
$ paste -s -d ',\n' infile
KEY 4048:1736 string,3
KEY 0:1772 string
pr
,paste
,awk
,xargs
,sed
undpure bash
! (xargs
ist langsamer, langsamer als Bash !)