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
Eu uso o comando grep
para procurar uma string em muitos arquivos. Existe algo semelhante a "pesquisar e substituir"?
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.
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.
Você pode usar o Vim no modo Ex:
for b in *.txt
do
ex -sc '%s/OLD/NEW/g|x' "$b"
done
%
seleciona todas as linhas
s
substituto
g
substitua todas as ocorrências em cada linha
x
salvar e fechar
Tags command-line files