Usando paste :
paste -d \n file2 file1
Arquivo1:
.tid.setnr := 1123
.tid.setnr := 3345
.tid.setnr := 5431
.tid.setnr := 89323
Arquivo2:
.tid.info := 12
.tid.info := 3
.tid.info := 44
.tid.info := 60
Arquivo de saída:
.tid.info := 12
.tid.setnr := 1123
.tid.info := 3
.tid.setnr := 3345
.tid.info := 44
.tid.setnr := 5431
.tid.info := 60
.tid.setnr := 89323
Usando paste :
paste -d \n file2 file1
Outra solução para o awk:
awk '{print; getline < "file1"; print}' file2
A paste solution é a mais portátil e eficiente. Só estou mencionando essa alternativa caso você prefira o comportamento no caso em que os dois arquivos não tenham o mesmo número de linhas:
Com o GNU sed :
sed Rfile1 file2
Se file1 tiver menos linhas que file2 , quando file1 estiver esgotado, sed não produzirá nada para ele (em oposição a linhas vazias para paste ).
Se file1 tiver mais linhas que file2 , essas linhas extras serão descartadas (em vez de imprimir linhas vazias para file2 com paste ).
$ paste a b
1 a
2 b
3
4
$ paste -d \n a b
1
a
2
b
3
4
$ sed Rb a
1
a
2
b
3
4
$ sed Ra b
a
1
b
2
Usando awk ( gawk , nawk , mawk ):
awk 'NR==FNR {x[FNR]=$0;next} {print x[FNR]"\n"$0}' file2 file1 > outputfile
NR==FNR {x[FNR]=$0;next} : NR==FNR é correspondido apenas se o número do registro atual for igual ao número de registro do arquivo atual (portanto, ele corresponde apenas ao processar o primeiro arquivo): armazena o registro atualmente processado na matriz x em um índice igual para o número de registro do arquivo atual e pula o registro atual {print x[FNR]"\n"$0} : imprime o conteúdo da matriz x em um índice igual ao número de registro do arquivo atual seguido por uma nova linha e pelo conteúdo do registro atual ~/tmp$ cat file1
.tid.setnr := 1123
.tid.setnr := 3345
.tid.setnr := 5431
.tid.setnr := 89323
~/tmp$ cat file2
.tid.info := 12
.tid.info := 3
.tid.info := 44
.tid.info := 60
~/tmp$ awk 'NR==FNR {x[FNR]=$0;next} {print x[FNR]"\n"$0}' file2 file1
.tid.info := 12
.tid.setnr := 1123
.tid.info := 3
.tid.setnr := 3345
.tid.info := 44
.tid.setnr := 5431
.tid.info := 60
.tid.setnr := 89323
A solução mais fácil é fornecida abaixo.
cat file1 >> file2
ou
cat file2 >> file1
Tags text-processing awk sed paste