Cuál es la mejor herramienta para buscar y reemplazar expresiones regulares a través de múltiples archivos?

StackOverflow https://stackoverflow.com/questions/102083

  •  01-07-2019
  •  | 
  •  

Pregunta

Preferiblemente libre de herramientas, si es posible.

También, la opción de búsqueda por múltiples expresiones regulares y cada colocación con diferentes cadenas que sería una ventaja.

¿Fue útil?

Solución

Perl.En serio, hace sysadmin cosas mucho más fácil.He aquí un ejemplo:

perl -pi -e 's/something/somethingelse/g' *.log

Otros consejos

sed es rápida y fácil:

sed -e "s/pattern/result/" <file list>

usted también puede unirse con encontrar:

find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"

Textpad hace un buen trabajo en Windows.Y es un muy buen editor.

He escrito una gratuita de la herramienta de línea de comandos para Windows para hacer esto.Se llama rxrepl, es compatible con unicode y búsqueda de archivos.Algunos pueden encontrar que es útil.

Como era de esperar, Perl hace un buen trabajo de esta gestión, en conjunto con una decente shell:

for file in @filelist ; do
  perl -p -i -e "s/pattern/result/g" $file
done

Esto tiene el mismo efecto (pero es más eficiente, y sin la condición de carrera) como:

for file in @filelist ; do
  cat $file | sed "s/pattern/result/" > /tmp/newfile
  mv /tmp/newfile $file
done

Emacs directorio del editor `dired-hacer-query-replace-regexp' función para buscar y reemplazar un regexp a través de un conjunto de archivos marcados.

En Windows, me gustaba WinGrep

En Ubuntu, yo uso Regexxer.

Para la búsqueda y reemplazo en varios archivos en Windows he encontrado rxFind a ser muy útil.

Para Mac OS X, TextWrangler hace el trabajo.

Mi favorito personal es PowerGrep por JGSoft.Interfaces con RegexBuddy que puede ayudarle a crear y poner a prueba la expresión regular, copia de seguridad automática de todos los cambios (y proporciona deshacer"), proporciona la capacidad de analizar varios directorios (con nombre de archivo de los patrones), y también es compatible con formatos de archivo tales como Microsoft Word, Excel y PDF.

PowerGrep Screenshot

Me gustaría ir para bash + encontrar + sed.

Vim para el rescate (y el presidente ;-) ).Probar:

vim -c "argdo! s:foo:bar:gci" <list_of_files>

(Me encanta el de Vim -c interruptor, es mágico.O si ya había en Vim, y abrió los archivos, por ejemplo:

vim <list_of_files>

Sólo problema:

:bufdo! s:foo:bar:gci

Por supuesto sed y perl es capaz también.HTH.

He tenido el lujo de Unix y Ubuntu;En tanto, yo uso gawk para cualquier cosa que requiera de línea-por-línea de búsqueda y reemplazo, especialmente para la línea-por-línea para substring(s).Recientemente, este fue el más rápido para el procesamiento de 1100 cambios contra millones de líneas en cientos de archivos (un directorio) En Ubuntu yo soy un fan de regexxer

 sudo apt-get install regexxer

En Windows hay alternativa gratuita que funciona mejor:Notepad++

Vaya a "Buscar" -> "Buscar en Archivos".Uno puede dar directorio, patrón de archivo, conjunto de expresiones regulares, a continuación, vista previa de los partidos y, finalmente, reemplazar todos los archivos de forma recursiva.

Me encanta esta herramienta:

http://www.abareplace.com/

Le da un "como se escribe" vista previa de la expresión regular...FANTÁSTICO para aquellos que no están bien versados en la RE...y es super rápido en el cambio de cientos o miles de archivos a la vez...

Y, a continuación, vamos a DESHACER sus cambios así...

Muy bonito...

Patrick Steil - http://www.podiotools.com

si textpad, " es una respuesta válida, yo sugeriría Sublime Text las manos hacia abajo.

Multi-cursor ediciones son una manera más eficiente para realizar reemplazos en general me parece, pero su "Buscar en Archivos"es de primer nivel para granel regex/plain encontrar reemplazos.

jEdit's regex buscar y reemplazar en archivos es bastante decente.Ligeramente excesivo si sólo vas a usar para eso, sin embargo.Asimismo, no apoyo la multi-expresión-reemplazar la pidió.

He encontrado la herramienta RxFind útil (gratis OSS).

Soportes (código fuente, deb/Ubuntu, OSx y Windows), tiene una buena visualización de los resultados, permitiendo seleccionar de forma individual a solicitar la sustitución.Usted puede buscar por texto estándar, sensible a mayúsculas y minúsculas o no, y regex.Muy importante:usted puede excluir de los patrones de los archivos y directorios en la búsqueda.

Por lo menos 25 años, he estado usando Emacs a gran escala de los reemplazos a través de grandes cantidades de archivos.Ejecutar etags para especificar cualquier conjunto de archivos para buscar a través de:

$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md

A continuación, abrir y ejecutar Emacs tags-query-replace, que solicita regex y de reemplazo:

\b\(foo\)\b
\1bar
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top