Buscar y reemplazar varios varios valores diferentes a la vez

Tengo un archivo con varias instancias de Text_1 y Text1 y necesito reemplazar ambas cadenas con Text_A y TextB respectivamente.

Actualmente estoy haciendo dos encontrar y reemplazar funciones en cada archivo uno que encuentra Text_1 y lo reemplaza con Text_A y el otro que encuentra Text1 y lo reemplaza con TextB .

¿Hay alguna manera de hacer esto de una vez en lugar de tener que ejecutar "Buscar y reemplazar" dos veces?

Estoy utilizando Dreamweaver CS3, pero también tengo Notepad ++, regular Bloc de notas, OO Writer, MS Word si los que será más fácil. Idealmente, podría hacer esto en Dreamweaver o Notepad ++, pero estoy abierto a descargar algo más para hacer el trabajo. Preferiría no tener que hacer ninguna materia de la línea de comando o crear un archivo de hornada (mientras que soy consciente de él, no lo entiendo realmente).

En caso de que la descripción anterior no está clara, permítanme explicar de esta manera …

Quiero ejecutar Buscar y reemplazar 1 vez en 1 documento y quiero que haga TODO lo siguiente durante una instancia de Buscar y reemplazar:

  1. Buscar Text_1 y reemplazar con Text_A
  2. Buscar Text1 y reemplazar con TextB

No estoy tratando de hacer una búsqueda y reemplazo a través de varios documentos.

Echa un vistazo a Sed . Usted puede alcanzar fácilmente su meta por solamente una línea de comando

sed -e "s/Text_1/TextA/" -e "s/Text1/TextB/" <your_file.txt>your_file_new.txt

Desde Notepad ++ 6.0 es realmente posible sin scripts usando la siguiente técnica:

Buscar: Text_1 y reemplazar con: Text_A

Buscar: Text2 y reemplazar con: TextB

Buscar: (Texto_1) | (Texto2)

Reemplazar: (? 1Text_A) (? 2TextB)

La sintaxis general es:

 Find: (FindA)|(FindB)|(FindC)... Replace: (?1ReplaceA)(?2ReplaceB)(?3ReplaceC)... 

? 1 se refiere a la primera frase capturada y así sucesivamente.

Conseguí esto de la respuesta siguiente: https://stackoverflow.com/a/16104946/287101

Es mejor que ejecutes Buscar y reemplazar dos veces, porque tienes dos reemplazos diferentes sucediendo. Sin embargo, debe haber muy poca compensación en el tiempo de procesamiento. Considera lo siguiente:

Funcionamiento Buscar y reemplazar una vez, buscando término por término:

 Get Term Does term match? If so, replace term Get Next Term ... 

Para propósitos de ejecución, vamos a suponer que es lineal y decir que esto se ejecuta en tiempo O (n).

Desea encontrar dos términos diferentes. Correr Buscar y reemplazar dos veces se ve como:

 Get Term Does term match? If so, replace term Get Next Term ... Get Term Does term match? If so, replace term Get Next Term ... 

Que tomaría O (2x1n) tiempo, o el doble de largo como la búsqueda de un término.

La búsqueda de dos términos con dos reemplazos teóricamente se vería así:

 Get Term Does first term match? If so, replace first term Does second term match? If so, replace second term Get Next Term ... 

Conseguir los términos no toma tanto poder de proceso, tan esencialmente usted está mirando para arriba dos sistemas de búsquedas para cada término, dando una época de O (1x2n), funcionando una vez pero buscando dos términos.

Mientras que ahorraría un poco de tiempo no cargando cada término dos veces, pasaría más tiempo buscando cada término dos veces, así que hay poca compensación, y puesto que esta característica sería utilizada menos a menudo que buscando un término con un reemplazo, los desarrolladores de la aplicación apenas asumen que no escriben Que la funcionalidad.

RENUNCIA A LOS PROGRAMADORES: Este es un ejemplo generalizado. Sé que es mejor, pero estoy tratando de mostrar por qué esa característica no se encuentra.

Utilizando Notepad ++, puede

  • Abra todos los archivos que contengan las palabras que desea reemplazar y utilice Buscar / Reemplazar en todos los archivos abiertos

    Introduzca aquí la descripción de la imagen

  • Utilice Buscar / Reemplazar en archivos

    Introduzca aquí la descripción de la imagen

  • Grabar una macro que realiza las opciones de buscar y reemplazar y reproducirla

El soporte de expresiones regulares en Notepad ++ está muy limitado. Sin el operador de alternancia, no hay esperanza de acercarse a lo que quieres hacer. Tendrá que usar sed o un editor que tenga un mejor soporte de regex.

Las extensiones GNU comúnmente usadas para la sintaxis de expresiones regulares incluyen:

  • el ? Operador, que significa cero o uno de un tipo;
  • El | Operador de alternancia ("foo | bar" coincide con "foo" o "bar")
  • Modificadores como / g para codicioso o / i para mayúsculas y minúsculas;
  • {A, b} para denotar entre a y b tokens de una clase.
  • (Patrón) + a mach uno o más partidos del mismo patrón

El componente Scitilla, que sustenta Notepad ++, es estrictamente compatible con POSIX y no reconoce estas extensiones. Puede consultar las expresiones regulares para obtener un resumen completo y algunos ejemplos

Fuente

Ver también

GNUWin32 sed para Windows

Utilizo TextCrawler para encontrar y reemplazar por lotes. (Yo uso Notepad + + para búsqueda única / sustituir a través de múltiples archivos, ya que es más rápido que Textcrawler.) TextCrawler soporta expresiones regulares, así como la búsqueda / encontrar normal. Los archivos por lotes se pueden guardar y volver a cargar para su uso futuro.

También se puede hacer usando ActiveX Plugin (para Notepad ++) y ejecutando script personalizado:

 NppApplication.activeEditor.text =NppApplication.activeEditor.text .replace(/Text_1/g,"Text_A") .replace(/Text1/g,"TextB") 

Esto funciona para todos los números (para eliminar todos los números del texto / artículo)

  1. Presione Ctrl + H para abrir el cuadro de diálogo Buscar y reemplazar.

  2. En el cuadro "Buscar", escriba ^ #

  3. Deje la casilla "Reemplazar con" vacía.

  4. Reemplaza todo.

    Intereting Posts