br comando para substituir uma string de um arquivo por todo o conteúdo de outro arquivo [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    

Eu quero escrever um comando sed (ou awk) para substituir uma string de um arquivo por todo o conteúdo de outro arquivo. Observe que o segundo arquivo do qual desejo obter o conteúdo possui mais de uma linha. Eu tentei isso:

sed -e "s/PLACEHOLDER/$(sed 's:/:\/:g' TestOutput.txt)/" SQLInput.txt

mas recebeu um erro dizendo sed: -e expression #1, char 22: unterminated 's' command

    
por Sandeep Dongapure 19.03.2015 / 14:46

2 respostas

2

tente

sed -i '/PLACEHOLDER/ r TestOutput.txt' SQLInput.txt

onde

  • -i editar no lugar
  • /PLACEHOLDER/ pesquisa por padrão
  • r TestOutput.txt ler arquivo

observe que /PLACEHOLDER/ não é excluído.

para que seja excluído

sed -i -e '/PLACEHOLDER/ r TestOutput.txt' -e s/PLACEHOLDER// SQLInput.txt

onde

  • -e /PLACEHOLDER/d excluirá toda a linha com PLACEHOLDER
  • -e s/PLACEHOLDER// excluirá a string PLACEHOLDER
por 19.03.2015 / 14:55
0

Um código sed é mais simples neste caso, mas também existe uma tag awk nessa questão:

awk 'function readfile (file) { getline var < file ; return var }
     BEGIN { RS="^$" }; gsub(/PLACEHOLDER/,readfile("TestOutput.txt"))
' SQLInput.txt
    
por 19.03.2015 / 15:12