¿Cómo "buscar y reemplazar" muchos archivos?

¿Cómo "buscar y reemplazar" muchos archivos?

Utilizo el grepcomando para buscar una cadena en muchos archivos. ¿Existe algo parecido a "buscar y reemplazar"?

Respuesta1

estas buscando elseddominio. Por ejemplo, para reemplazar "perro" por "gato" en todos los archivos de texto en el directorio actual:

sed -i 's/dog/cat/' *.txt

Respuesta2

Me viene a la mente sed. Ejemplo:

sed s/cat/dog/ <input >output

Esto busca cat en una línea y coloca a dog en su lugar en la entrada del archivo y escribe en la salida del archivo.

Respuesta3

sedes la herramienta adecuada; pero, como alternativa, incluso puedes usar excomandos en vim:

vim -c 'args <files> | argdo %s/cat/dog/g | x'

donde <files>está la lista de archivos o patrones en los que quieres hacer la sustitución.

Respuesta4

Puedes usar Vim en modo Ex:

for b in *.txt
do
  ex -sc '%s/OLD/NEW/g|x' "$b"
done
  1. %seleccionar todas las líneas

  2. ssustituto

  3. greemplazar todas las instancias en cada línea

  4. xguardar y cerrar

información relacionada