agregar una fila de un archivo a otro archivo como fila

agregar una fila de un archivo a otro archivo como fila

Tengo el archivo1 cuyo contenido es así:

archivo1

Las 6 columnas se obtienen de 6 hosts diferentes antes de presentarlas usando el comando "-exec cp". Esto es sólo para su información.

Ahora tengo una lista de 6 nombres de host (archivo2) que quiero agregar como primera fila al archivo1.

El contenido del archivo 2 se proporciona a continuación.

HOST1 
HOST2 
HOST3 
HOST4 
HOST5 
HOST6 

Necesito el resultado final como este.

salida final

Puedo agregar una columna pero no una fila.

Respuesta1

Aquí hay una forma:

awk -vhead="$(tr '\n' ' ' <file2)" 'BEGIN{print head}{print}' file1 > newfile

El trcomando reemplaza las nuevas líneas con espacios, convirtiendo la "columna" en file2una "fila". Esto se pasa awkcomo la headvariable que se imprime antes que nada. Luego, simplemente se imprime cada línea del archivo de entrada.

Alternativamente, puedes hacer todo en awk:

awk 'NR==FNR{printf "%s ",$0; next}FNR==1{print ""}1;' file2 file1 > newfile

NRes el número de línea de entrada actual y FNRel número de línea del archivo actual. Los dos serán iguales sólo mientras se lee el primer archivo. Imprimirá printf "%s ",$0; nextla línea actual sin al \nfinal y pasará a la siguiente. Es FNR==1{print ""}solo para agregar \ndespués de que se haya impreso el encabezado y 1;es awkuna abreviatura de "imprimir esta línea".

Respuesta2

( echo $(cat file2) ; cat file1 ) | column -t > file3

información relacionada