A ferramenta mais fácil aqui pode ser sed . Para inserir b.txtem a.txtapós a 5ª linha, você poderia escrever:
sed '5r b.txt' a.txt
sedlê o arquivo especificado como argumento ( a.txt) linha por linha. Todas as linhas são reproduzidas na saída da mesma forma que apareceram na entrada, a menos que sejam alteradas por um comando.
o 5 é um endereço (número da linha) no qual o seguinte comando deve ser executado. O comando que usamos é r, que usa um nome de arquivo como argumento (aqui b.txt), lê-o completamente e o insere na saída após a linha atual.
Como está acima, este sed linha de comando imprimirá apenas a saída no terminal, sem gravar em nenhum arquivo. Você pode redirecioná-lo para um novo arquivo (não para nenhum dos arquivos de entrada!) Usando o redirecionamento de saída do Bash:
sed '5r b.txt' a.txt > c.txt
Ou você pode modificar diretamente o arquivo de entrada externo a.txtusando a opção sed's -i(para "no local"). Se você escrever como-i.bak , ele fará uma cópia de backup do arquivo de entrada original com o sufixo .bakprimeiro:
sed -i '5r b.txt' a.txt
Um exemplo:
$ cat a.txt
January
February
March
April
May
October
November
December
$ cat b.txt
June
July
August
September
$ sed '5r b.txt' a.txt
January
February
March
April
May
June
July
August
September
October
November
December