Usando sed, como posso substituir uma linha contendo um padrão pelo conteúdo de outro arquivo?

2

input_file.txt :

one fffds
two xxxx
three ffff
four ffde

data_file.txt :

six
seven

Desejo substituir a linha que contém two xxxx em input_file.txt pelo conteúdo de data_file.txt . O arquivo de saída deve ficar assim:

output_file.txt :

one fffds
six
seven
three ffff
four ffde
    
por Ramesh 12.09.2012 / 18:24

1 resposta

3

Isso funciona para mim:

sed -n '
  /two xxxx/{
    rdata_file.txt
    d
  }
  p'

Se a linha corresponder à expressão, o conteúdo do arquivo será impresso e o próximo ciclo será iniciado. Caso contrário, o segundo comando é invocado que imprime a linha.

Uma solução um pouco mais legível fazendo algo semelhante em Perl:

perl -pe '/two xxxx/ and $_='cat data_file.txt''
    
por 12.09.2012 / 18:43