GNU/Linux >> Tutoriales Linux >  >> Linux

¿Probar la búsqueda recursiva de Sed y reemplazarla antes de ejecutarla?

¿Hay alguna forma de ejecutar una búsqueda recursiva de prueba y reemplazar usando sed? , antes de ejecutarlo? Solo quiero imprimir los resultados antes de hacer la búsqueda y reemplazar. Algo así como hacer eco de los resultados de,

grep -rl term1 . |xargs sed -i -e 's/term1/term2/'

Respuesta aceptada:

Podría ejecutar sed sin -i y avance a través de la salida con less

grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less

Luego ejecuta sed con -i.bak para crear copias de seguridad que puede diferenciar después

grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct

Editar: Como se sugiere en el comentario, use grep --null | xargs -0 . Esto hace que los nombres de archivo terminen con el byte nulo, lo que lo hace seguro para los nombres de archivo con caracteres inusuales como nueva línea. Sí, n es un carácter válido en un nombre de archivo unix. Los únicos caracteres prohibidos son la barra inclinada / y el carácter nulo

Linux
  1. Uso de sed para buscar y reemplazar archivos de texto en Linux

  2. Uso de Sed para buscar y reemplazar una línea entre rangos de patrones

  3. Línea de comando:busque y reemplace en todos los nombres de archivo que coincidan con grep

  4. ¿Cómo probar en qué puerto se está ejecutando MySQL y si se puede conectar?

  5. Buscar y reemplazar en secuencias de comandos de shell

Cómo usar sed para buscar y reemplazar cadenas en archivos

Manipulación de texto con sed y grep

Cómo buscar y reemplazar texto, palabra o cadena en un archivo

Buscar y reemplazar MySQL

Cómo realizar una búsqueda Grep en todos los archivos y en todos los directorios

Cómo usar Sed para buscar y reemplazar una cadena en un archivo