Lote / Buscar y editar líneas en un archivo TXT

Quiero crear un lote mientras que encuentra líneas específicas en un archivo por lotes y son capaces de editar estas líneas.

Ejemplo:

//ARCHIVO DE TEXTO//

ex1
ex2
ex3
ex4

quiero dejar que el archivo por lotes encontrar 'ex3' y editar esto a 'ex5' para que se vea así:

ex1
ex2
ex5
ex4
Solución

En una instalación nativa de Windows, puede utilizar batch(cmd.exe) o vbscript sin necesidad de obtener herramientas externas. Aquí'hay un ejemplo en vbscript:

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    If InStr(strLine,"ex3")> 0 Then
        strLine = Replace(strLine,"ex3","ex5")
    End If 
    WScript.Echo strLine
Loop    

Guardar como mireemplazar.vbs y en la línea de comandos:

c:\test> cscript /nologo myreplace.vbs  > newfile
c:\test> ren newfile file.txt
Comentarios (0)

No hay función de búsqueda y reemplazo o edición de secuencias en la línea de comandos en XP o 2k3 (no sé acerca de Vista o más allá). Así, you'll necesidad de utilizar una secuencia de comandos como el Ghostdog publicado, o una herramienta de búsqueda y reemplazo capaz como sed.

Hay más de una manera de hacerlo, como muestra este script:

@echo off
    SETLOCAL=ENABLEDELAYEDEXPANSION

    rename text.file text.tmp
    for /f %%a in (text.tmp) do (
        set foo=%%a
        if !foo!==ex3 set foo=ex5
        echo !foo! >> text.file) 
del text.tmp
Comentarios (2)

Este es el tipo de cosas para las que se hizo sed (por supuesto, necesitas sed en tu sistema para ello).

sed 's/ex3/ex5/g' input.txt > output.txt

Necesitarás un sistema Unix o una plataforma tipo Windows Cygwin para esto.
También existe GnuWin32 para sed. (Instalación y uso de GnuWin32).

Comentarios (1)