Otras soluciones mezclan sintaxis de expresiones regulares. Para usar patrones perl / PCRE para tanto buscar y reemplazar, y sólo los archivos coincidentes del proceso, esto funciona bastante bien:
grep -rlZPi 'match1' | xargs -0r perl -pi -e 's/match2/replace/gi;'
dónde match1
y match2
generalmente son idénticos, pero match1
pueden simplificarse para eliminar características más avanzadas que solo son relevantes para la sustitución, por ejemplo, capturar grupos.
Traducción: grep
recursivamente y enumere los archivos que coinciden con este patrón PCRE, separados por nul para proteger cualquier carácter especial en el nombre del archivo, luego canalice los nombres de archivo a los xargs
que se espera una lista separada por nul, pero no hará nada si no se reciben nombres, y llegar perl
a sustituir líneas donde se encuentran coincidencias.
Agregue el I
interruptor grep
para ignorar los archivos binarios. Para la coincidencia entre mayúsculas y minúsculas, suelte el i
interruptor grep
y la i
bandera adjunta a la expresión de sustitución, pero no el i
interruptor en perl
sí.