Executando vários comandos sed nos mesmos arquivos simultaneamente

1

Para alterar todas as ocorrências da string foo para barrar em todos os arquivos em um diretório que eu use

sed -i -- 's/foo/bar/g' *

Descobrimos que aqui

Mas também quero alterar NAME para nome etc. Tentei

sed -i - 's / foo / bar / g' *; sed -i - '/ NAME / name / g' *

Isso cria novos arquivos. Como posso obter esse comando para reescrever o arquivo original com foo substituído por bar e também NAME substituído por nome e então haveria outras substituições, sem criar novos arquivos?

    
por Shane G 05.09.2017 / 10:56

1 resposta

8

Você pode fornecer várias expressões para sed em uma chamada:

sed -e 'expr' -e 'expr' -e ...

No seu caso:

sed -e 's/foo/bar/g' -e 's/NAME/name/g'

As expressões serão aplicadas a cada linha de entrada em sucessão, da esquerda para a direita.

    
por 05.09.2017 / 10:59