2011-10-12 19 views
11

Quiero unir dos archivos cat file1 file2 > file3. Pero comienza con una nueva línea. No quiero eso. Podría usar tr para reemplazar todas las líneas nuevas al espacio, pero no puedo hacer eso, porque hay nuevas líneas en los archivos que no quiero reemplazar.Fusionando dos archivos con cat sin línea nueva

+1

¿verdad? mi gato (en cygwin) no pone ninguna línea nueva adicional antes o después de ninguno de los 2 archivos. ¿Estás seguro de que no tienes la nueva línea en file1 o file2? – Kashyap

+0

¿Puedes aclarar cómo son 'file1' y' file2', y qué salida quieres en 'file3'? Exactamente qué líneas nuevas quieres en la salida, y qué nuevas líneas no quieres? –

Respuesta

14

Usted podría utilizar head con -1 como parámetro -c banderas y -q

head -c -1 -q file1 file2 > file3 

head -c -1 dará salida a todo hasta el último 1 byte del código (en este caso el pasado 1 byte - línea de fondo - no será incluido). El -q es para que los nombres de archivos no se canalicen a file3 como head lo hace de forma predeterminada cuando head ing archivos múltiples.


O, como sugiere esta respuesta - bash cat multiple files content in to single string without newlines , tubería a tr:

tr -d "\n" 
+0

Me gusta la opción 'tr', gracias :) –

2

en bash, que puede hacer:

cat <(sed -n '1n;p' file1) <(sed -n '1n;p' file2) 
0

que ca usar awk:

awk '(FNR>1){print}' file1 file2 

actualización - como funciona:

nos preguntamos awk para procesar dos archivos: file1 y file2. Imprimirá un registro completo (línea) si la condición es (FNR>1) si es verdadero. FNR es una variable defined as:

FNR - El número de registro de entrada en el archivo de entrada actual.

por lo tanto, la condición (FNR>1) será cierta cada vez, excepto en la primera línea de cada archivo. De esta manera salteamos la primera línea de cada archivo.

+0

¿Quién puede votar por esto, cuéntanos cómo funciona? – kommradHomer

+0

@kommradHomer ver la actualización –

+1

Er ... No veo nada sobre querer omitir la * primera * línea de un archivo ... –