adicione uma linha de um arquivo em outro arquivo como linha

adicione uma linha de um arquivo em outro arquivo como linha

Eu tenho o arquivo1 cujo conteúdo é assim:

arquivo1

As 6 colunas são obtidas de 6 hosts diferentes antes de apresentá-las usando o comando "-exec cp". Isso é apenas para sua informação.

Agora, tenho uma lista de 6 nomes de host (arquivo2) que desejo adicionar como primeira linha ao arquivo1.

O conteúdo do arquivo2 é fornecido abaixo.

HOST1 
HOST2 
HOST3 
HOST4 
HOST5 
HOST6 

Eu preciso do resultado final assim.

resultado final

Consigo adicionar uma coluna, mas não uma linha.

Responder1

Aqui está uma maneira:

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

O trcomando substitui novas linhas por espaços, convertendo a “coluna” em file2uma “linha”. Isso é passado awkcomo a headvariável que é impressa antes de qualquer outra coisa. Então, cada linha do arquivo de entrada é simplesmente impressa.

Alternativamente, você pode fazer tudo em awk:

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

NRé o número da linha de entrada atual e FNRo número da linha do arquivo atual. Os dois serão iguais apenas enquanto o primeiro arquivo estiver sendo lido. O printf "%s ",$0; nextirá imprimir a linha atual sem um \nno final e pular para a próxima. É FNR==1{print ""}apenas para adicionar um \napós o cabeçalho ter sido impresso e 1;é awkuma abreviação para "imprimir esta linha".

Responder2

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

informação relacionada