2009-10-01 16 views
6

¿Hay alguna manera de reemplazar algunos caracteres en un archivo de texto por un archivo por lotes?Reemplazar caracteres en un archivo de texto con un archivo por lotes

No encontré ningún comando para hacer eso.

+0

¿Puedes dar un ejemplo de lo que quieres reemplazar (antes y después)? – akf

+0

Solo quería reemplazar en un archivo de texto todas las apariciones de '<' por un carácter vacío. –

Respuesta

4

La respuesta rápida es "No, no con los servicios públicos básicos" ventanas

Pero como sugieren las otras respuestas, hay un montón de puertos de UNIX que hay que hacer lo que quiera. Tome alook al gnuwin32 packages.

EDIT:

acuerdo, revisar mi estricta "No". Puede haber una manera de hacerlo, dependiendo de la complejidad de su tarea y su sistema operativo. Al usar Windows 2000 y versiones posteriores, cmd proporciona extensiones de comandos que puede usar.

La idea básica es utilizar un bucle FOR que pasar por cada línea de un archivo de entrada y luego utilizar sustitución de cadenas proporcionada por el comando SET para reemplazar sus personajes.

tengo ninguna solución a la mano, pero es posible que trate por su cuenta, utilizando infromation de this sitio bastante fría. Mire here para la sintaxis de bucle FOR y here para la sustitución de cadena.

+0

+1 para el gnuwin32. –

+2

El problema básico al iterar sobre el archivo es que cuando contiene caracteres especiales como '&', '|' o '>' se vuelve complicado. Coloca números impares de comillas en una línea y todas las apuestas están desactivadas. No he encontrado una forma de escapar correctamente de tales caracteres cuando hay números impares de comillas en una línea. De lo contrario, es fácil pero desordenado. – Joey

+0

Oh, solo otra cosa: 'for' se salta líneas vacías. Si necesita que el archivo sobreviva, incluidos los que tiene que buscar otras soluciones. – Joey

0

Puede buscar un programa de línea de comandos como GREP puede llamar de un lote que tendrá una cadena y un archivo de reemplazar y hacer el canje para usted.

+0

Grep se utiliza para realizar búsquedas/filtros ... incluso la wikipedia sabe que: http://en.wikipedia.org/wiki/Grep – enguerran

+0

De hecho, sed es más específico para esa tarea, pero para su información, hay Windows/DOS variantes de grep que permiten reemplazar también. – Deverill

0

Puede utilizar el puerto de DOS de línea de comandos de Unix utilidad "tr".

Un puerto de DOS gratuito puede ser found here, uno de los que me gusta (hay muchos diferentes) son "UXUTL - Colección completa de utilidades de línea de comandos de Unix para DOS".

La ventaja es que se obtiene un manojo entero de comandos muy útiles, no sólo tr.

1

puede instalar UnxUtils y luego hacer

sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name 

para cambiar las palabras o

cat file|tr "a" "b" > changed.file.name 

para cambiar caracteres

1

usar sed o nada:

sed -i 's/FROM/TO/g' filename.txt 

sed se puede descargar here, para varias plataformas.

1

usted tiene que utilizar WIN32 SED y ver la página oficial de GNU sed de explicación. Es muy potente:

> sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name 
0

A pesar de que esta pregunta es bastante antiguo, el futuro lector puede estar interesado en saber que si quieres un pequeño exe sin dependencias de sólo la sustitución de texto recomiendo el uso de FART.

Cuestiones relacionadas