Eu tenho um arquivo de texto (na verdade XML) que desejo alterar usando uma linha de comando. Em outras palavras, como parte de um lote do Windows, quero localizar uma string (neste caso @@@@, que usa um caractere que não está presente em nenhum outro lugar do arquivo) e, em seguida, substituí-la por algo simples, como um data '18/08/11'.
Existe algum tipo de 'grep', 'perl' ou outro tipo de maneira de, em pouco tempo, apenas substituir a string - novamente, isso tem que ser através da linha de comando, já que quero automatizar o processo.
Aliás, tenho Active State PERL no meu PC.
Responder1
Para substituir todas as ocorrências de findthis
por replaceto
no arquivo example.txt
faça:
perl -pi -e 's/findthis/replaceto/g' example.txt
Responder2
Não há nada de errado com as respostas que você já tem, mas apenas para complementar as opções, ressaltarei que se você estiver no Windows 7, também terá o PowerShell instalado. Ou, nesse caso, ele pode ser instalado no XP/Vista, se você preferir. Então:
$foo = gc C:\Path\To\File.txt; $foo | %{$_.replace('@@@@', '8/1/11')} | Out-File C:\Path\To\File.txt
Responder3
Você parece conhecer grep. Você pode querer usar o mesmo utilitário que édisponível para janelas. Você não precisa instalá-lo, basta colocá-lo dentro do caminho (ou na mesma pasta onde o arquivo batch é executado). Se você usá-lo, não esqueça de baixar as "dependências" e também os arquivos binários (ou baixar o arquivo executável de instalação se você gosta desse tipo de coisa).
Como alternativa, você pode usar a linguagem VBS (linguagem de script para Windows XP) e criar um script para substituir uma string em um arquivo (veja este link para detalhes) e executando o script na linha de comando usandocscript