Para substituir todas as ocorrências de findthis
por replaceto
no arquivo example.txt
do:
perl -pi -e 's/findthis/replaceto/g' example.txt
Eu tenho um arquivo de texto (na verdade, XML) que eu quero poder alterar usando uma linha de comando. Em outras palavras, como parte de um lote do Windows, quero localizar uma sequência (nesse caso, @@@@, que usa um caractere não presente em nenhum outro lugar no arquivo) e substituí-la por algo simples, como data '18/08/11'.
Existe algum tipo de 'grep', 'perl' ou outro tipo de caminho para, em pouco tempo, apenas substituir a string - mais uma vez, isto tem que ser feito através da linha de comando, já que eu quero automatizar o processo .
Aliás, eu tenho o Active State PERL no meu PC.
Não há nada de errado com as respostas que você já tem, mas apenas para adicionar as opções, vou apontar que, se você estiver no Windows 7, você tem o powershell instalado também. Ou para o caso, poderia ser instalado no XP / Vista, se assim o desejar. Então:
$foo = gc C:\Path\To\File.txt; $foo | %{$_.replace('@@@@', '8/1/11')} | Out-File C:\Path\To\File.txt
Você parece conhecer o grep. Você pode querer usar o mesmo utilitário que é disponível para Windows . Você não precisa instalá-lo, mas apenas colocá-lo no caminho (ou na mesma pasta em que o arquivo de lote é executado). Se você usá-lo, não se esqueça de baixar as "dependências", bem como os arquivos binários (ou baixar o arquivo de instalação exeurível se você gosta desse tipo de coisa).
Alternativamente, você pode querer usar o idioma VBS (linguagem de script para Windows XP) e criar um script para substituir uma string em um arquivo ( ver este link para detalhes ) e executar o script a partir do comando linha usando cscript