A ferramenta mais fácil aqui pode ser sed
. Para inserir b.txt
em a.txt
após a 5ª linha, você poderia escrever:
sed '5r b.txt' a.txt
sed
lê 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.txt
usando 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 .bak
primeiro:
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