Inserindo um arquivo em outro arquivo após a primeira ocorrência de um padrão

3

Eu quero inserir o conteúdo do arquivo1 no arquivo2 após um PADRÃO correspondente. Eu quero fazer isso somente após a primeira ocorrência do PADRÃO.

Gostaria de saber a modificação que preciso fazer no seguinte comando para minhas necessidades.

sed -i "/PATTERN/r file1" file2
    
por Gopal 25.09.2012 / 22:19

1 resposta

7

sed '/PATTERN/{
       r file1
       :a
       n
       ba
     }' file2

:a , n , ba é apenas um ciclo que imprime todo o conteúdo do arquivo após o PATTERN até o final. e note que essas 6 linhas são apenas um comando, mas a nova linha é necessária para delimitar o próximo comando sed após r , : e b .

informações adicionais de info sed :

'n'
     If auto-print is not disabled, print the pattern space, then,
     regardless, replace the pattern space with the next line of input.
     If there is no more input then 'sed' exits without processing any
     more commands.

': LABEL'
     [No addresses allowed.]

     Specify the location of LABEL for branch commands.  In all other
     respects, a no-op.

'b LABEL'
     Unconditionally branch to LABEL.  The LABEL may be omitted, in
     which case the next cycle is started.
    
por 25.09.2012 / 22:25