Escrevi um script de busca e substituição para imprimir minhas alterações e pedir confirmação. Não é isso.
Esta é a versão curta, agressiva e simples: me, tentando encaixar pesquisa e substituição em todo o projeto em uma linha única para a linha de comando, usando ag , xargs e perl (ou sed).
Cole isso em um script de shell (por exemplo, replace.sh) ou coloque em uma função de shell:
ag -l "$1" | xargs perl -pi.bak -e "s/$1/$2/g"
ou, se você preferir sed:
ag -l "$1" | xargs sed -ri.bak -e "s/$1/$2/g"
Funciona com referências anteriores ao estilo perl também:
replace.sh '(foo)' '$1-bar' # foo => foo-bar
ou se você usar sed:
replace.sh '(foo)' '\1-bar' # foo => foo-bar
Notas:
- Salva backup de arquivos alterados para
*.bak
- Vai engasgar-se o primeiro ou segundo argumento tem uma barra nele (alguma sugestão?)