Como “procurar e substituir” muitos arquivos?

8

Eu uso o comando grep para procurar uma string em muitos arquivos. Existe algo semelhante a "pesquisar e substituir"?

    
por Tom Brito 02.02.2012 / 13:45

4 respostas

16

Você está procurando o comando sed . Por exemplo, para substituir o "dog" por "cat" em todos os arquivos de texto no diretório atual:

sed -i 's/dog/cat/' *.txt
    
por Jjed 02.02.2012 / 13:51
1

sed é a ferramenta certa; mas, como alternativa, você pode até usar os comandos ex em vim :

vim -c 'args <files> | argdo %s/cat/dog/g | x'

em que <files> é a lista de arquivos ou padrões em que você deseja fazer a substituição.

    
por jcollado 02.02.2012 / 15:12
0

sed vem à mente. Exemplo:

sed s/cat/dog/ <input >output

Isso procura cat em uma linha e coloca o cão em seu lugar na entrada do arquivo e grava na saída do arquivo.

    
por Kerkdyk 02.02.2012 / 13:52
0

Você pode usar o Vim no modo Ex:

for b in *.txt
do
  ex -sc '%s/OLD/NEW/g|x' "$b"
done
  1. % seleciona todas as linhas

  2. s substituto

  3. g substitua todas as ocorrências em cada linha

  4. x salvar e fechar

por Steven Penny 16.04.2016 / 22:49