Uma ligeira variação na resposta de glenn jackman usando paste: se o valor da -dopção delimitador contém mais de um caractere, pastealterna entre os caracteres um por um e, combinado com as -sopções, continua fazendo isso enquanto processa o mesmo arquivo de entrada.
Isso significa que podemos usar o que quisermos como separador mais a sequência de escape \npara mesclar duas linhas por vez.
Usando uma vírgula:
$ 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
e o cifrão:
$ 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
O que isso não pode fazer é usar um separador que consiste em vários caracteres.
Como um bônus, se o pastefor compatível com POSIX, isso não modificará a nova linha da última linha no arquivo, portanto, para um arquivo de entrada com um número ímpar de linhas como
KEY 4048:1736 string
3
KEY 0:1772 string
paste não adicionará o caractere de separação na última linha:
$ paste -s -d ',\n' infile
KEY 4048:1736 string,3
KEY 0:1772 string
pr,paste,awk,xargs,sedepure bash! (xargsé o mais lento, mais lento que o bash !)