Eu sei como substituir uma linha por outra linha ou várias outras linhas com ferramentas como sed
. Mas existe uma maneira fácil de substituir uma linha em um arquivo por todo o conteúdo de um segundo arquivo?
Então, vamos dar um exemplo. Eu tenho um arquivo chamado file1.txt
:
A 1
B 2
C 3
E eu tenho um segundo arquivo file2.txt
:
line 1
line 2
line 3
Agora, quero substituir line 2
por todo o conteúdo de file1.txt
, então, no final, deve ficar assim
line 1
A 1
B 2
C 3
line 3
Uma maneira que eu poderia pensar seria algo assim:
sed -i "s/line 2/$(cat file1.txt)/g" file2.txt.
Mas também tenho que verificar alguns caracteres especiais como /
e talvez mais. Devo assumir que todos os caracteres legíveis possíveis podem estar em file1.txt
.
Então, voltando à minha pergunta: Existe uma maneira fácil de substituir uma linha em um arquivo por todo o conteúdo de um segundo arquivo? Não precisa ser sed
. Poderia ser também outra ferramenta, se pudesse fazer o trabalho melhor...
o
sed
roteiro éA nova linha após o nome do arquivo
file1.txt
é obrigatória, portanto, dividi-la em-e
expressões separadas na linha de comando torna-a indiscutivelmente mais legível do queO script procura uma linha cujo conteúdo seja
line 2
. Quando isso é encontrado, o conteúdo defile1.txt
é imediatamente exibido e a linha original é excluída.O uso
sed -i
fará as alterações em linhafile2.txt
(não recomendado).Usando vi
Vá para a linha, então:
Linha atual substituída pelo conteúdo do arquivo.