Encontre e substitua o Terminal e grave em um novo arquivo com os valores substituídos

0

Eu tenho um arquivo template.jou que tem o seguinte formato:

/codeline1
/codeline2
/var = var
/codeline3

Agora, quero substituir a parte var por valores diferentes, como A , B e C , e gravar o conteúdo de template.jou com o valor substituído em um novo arquivo.

Eu tentei o seguinte:

sed -n 's/var/A/gpw A.jou' template.jou

Mas isso só imprimiu a linha padrão correspondente (ou seja, /var = A ) para o novo arquivo A.jou , onde eu quero o arquivo completo como este:

/codeline1
/codeline2
/var = A
/codeline3

Eu também tentei:

sed -i '.bak' 's/var/A/g' template.jou

Isso substituiu o arquivo template.jou por novos conteúdos, mas eu quero que ele mude o nome do arquivo, assim como o novo arquivo é chamado A.jou .

    
por Saaru Lindestøkke 24.08.2013 / 12:07

1 resposta

1

Você provavelmente só quer redirecionar a saída de sed para outro arquivo:

sed 's/= var/= A/g' template.jou > A.jou

Certifique-se de substituir apenas a atribuição, por ex. combinando = var apenas.

Observe que 's/var/A/gp não alcançará o que você deseja, pois var será globalmente substituído e a substituição será impressa novamente. Você obteria essa saída:

/codeline1
/codeline2
/A = A
/A = A
/codeline3

Além disso, o modificador w imprime somente a parte modificada no arquivo especificado depois dela, o que significa que A.jou conteria apenas /var = A e nada mais. É por isso que você deve redirecionar toda a saída sed para outro arquivo.

    
por 24.08.2013 / 12:52