Outras soluções combinam sintaxes regex. Para usar padrões de perl / PCRE para ambos pesquisa e substituição, e somente os arquivos de correspondência de processos, isso funciona muito bem:
grep -rlZPi 'match1' | xargs -0r perl -pi -e 's/match2/replace/gi;'
onde match1
e match2
geralmente são idênticos, mas match1
podem ser simplificados para remover recursos mais avançados que são relevantes apenas para a substituição, por exemplo, grupos de captura.
Tradução: grep
recursivamente e liste os arquivos que correspondem a esse padrão PCRE, separados por nul para proteger caracteres especiais no nome do arquivo e canalize os nomes de arquivos nos xargs
quais está esperando uma lista separada por nulos, mas não fará nada se nenhum nome for recebido, e perl
substitua as linhas onde as correspondências são encontradas.
Adicione a I
opção grep
para ignorar arquivos binários. Para correspondência com distinção entre maiúsculas e minúsculas, solte o i
comutador de grep
e o i
sinalizador anexado à expressão de substituição, mas não o i
comutador em perl
si.