Una ligera variación en la respuesta de glenn jackman usando paste: si el valor de la -dopción delimitador contiene más de un carácter, pasterecorre los caracteres uno por uno, y combinado con las -sopciones sigue haciéndolo mientras procesa el mismo archivo de entrada.
Esto significa que podemos usar lo que queramos tener como separador más la secuencia de escape \npara fusionar dos líneas a la vez.
Usando una coma:
$ 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
y el signo de dólar:
$ 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
Lo que esto no puede hacer es usar un separador que consta de varios caracteres.
Como pastebeneficio adicional, si es compatible con POSIX, esto no modificará la nueva línea de la última línea del archivo, por lo que para un archivo de entrada con un número impar de líneas como
KEY 4048:1736 string
3
KEY 0:1772 string
paste no agregará el carácter de separación en la última línea:
$ paste -s -d ',\n' infile
KEY 4048:1736 string,3
KEY 0:1772 string
pr,paste,awk,xargs,sedypure bash! (xargses el más lento, más lento que bash !)