Tengo un archivo de texto (en realidad XML) que quiero poder cambiar usando una línea de comando. En otras palabras, como parte de un lote de Windows, quiero ubicar una cadena (en este caso @@@@, que usa un carácter que no está presente en ningún otro lugar del archivo) y luego reemplazarla con algo simple, como un fecha '18/8/11'.
¿Existe algún tipo de 'grep', 'perl' u otro tipo de forma de, en poco tiempo, simplemente reemplazar la cadena? Nuevamente, esto tiene que ser a través de la línea de comando, ya que quiero automatizar el proceso.
Por cierto, tengo Active State PERL en mi PC.
Respuesta1
Para reemplazar todas las apariciones de findthis
with replaceto
en el archivo example.txt
, haga lo siguiente:
perl -pi -e 's/findthis/replaceto/g' example.txt
Respuesta2
No hay nada de malo en las respuestas que ya tienes, pero solo para agregar opciones, señalaré que si estás en Windows 7, también tienes instalado PowerShell. O, de hecho, podría instalarse en XP/Vista si así lo desea. Entonces:
$foo = gc C:\Path\To\File.txt; $foo | %{$_.replace('@@@@', '8/1/11')} | Out-File C:\Path\To\File.txt
Respuesta3
Parece que conoces a grep. Es posible que desee utilizar la misma utilidad que esdisponible para ventanas. No es necesario instalarlo, solo colocarlo dentro de la ruta (o en la misma carpeta donde se ejecuta el archivo por lotes). Si lo usas, no olvides descargar las "dependencias" así como los archivos binarios (o descargar el archivo ejecutable de instalación si te gusta ese tipo de cosas).
Alternativamente, es posible que desee utilizar el lenguaje VBS (lenguaje de secuencias de comandos para Windows XP) y crear una secuencia de comandos para reemplazar una cadena en un archivo (Vea este enlace para más detalles) y ejecutando el script desde la línea de comando usandocscript