Simplemente use cat(si le gustan los gatos ;-)) y paste:
cat file.in | paste -d, - - > file.out
Explicación: pastelee de varios archivos y pega las líneas correspondientes (línea 1 del primer archivo con la línea 1 del segundo archivo, etc.):
paste file1 file2 ...
En lugar de un nombre de archivo, podemos usar -(guión). pastetoma la primera línea del archivo1 (que es stdin). Luego, quiere leer la primera línea del archivo2 (que también es estándar). Sin embargo, dado que la primera línea de stdin ya se leyó y procesó, lo que ahora espera en la secuencia de entrada es la segunda línea de stdin, que pastefelizmente se pega a la primera. La -dopción establece que el delimitador sea una coma en lugar de una pestaña.
Alternativamente, hacer
cat file.in | sed "N;s/\n/,/" > file.out
PD Sí, uno puede simplificar lo anterior a
< file.in sed "N;s/\n/,/" > file.out
o
< file.in paste -d, - - > file.out
que tiene la ventaja de no usar cat.
Sin embargo, no utilicé este idioma a propósito , por razones de claridad, es menos detallado y me gusta cat(LOS GATOS SON AGRADABLES). Así que por favor no edites.
Alternativamente, si prefiere pegar a gatos (pegar es el comando para concatenar archivos horizontalmente, mientras que gato los concatena verticalmente), puede usar:
paste file.in | paste -d, - -