Como localizar e substituir dados de string no arquivo de texto

1

Eu gostaria de poder analisar um arquivo de texto que contém dados como:

2014-08-06 18:06:15 e:\shared\filename1.Shared orphan entry BM-100
2014-08-06 18:46:15 e:\shared\filename222.Shared orphan entry BM-214
2014-08-06 18:53:15 e:\shared\filename92.Shared orphan entry BM-674

Isso está no Windows e gostaria de poder executar um script de arquivo em lotes para remover a sequência de datas e o texto após a extensão do arquivo .shared. Alguma idéia?

    
por user354113 06.08.2014 / 20:29

4 respostas

0

Você deseja o utilitário Unix sed , que lida com edições de expressões regulares e está disponível em várias versões do Windows (basta procurar sed.exe ). Se você passar o nome do arquivo para o arquivo de lote, ele deverá conter algo como:

sed <"%1" 's/\.Shared .*$'//|sed 's/^.* .* //' >"%1.mod"

Isso exclui em cada linha de " .Shared " para o final da linha, depois do início da linha até a segunda em branco, e salva o resultado no nome do arquivo passado com .mod acrescentado.

É claro que você pode remover um ou ambos os redirecionamentos e, em vez disso, redirecionar a entrada e / ou a saída quando o arquivo em lote for chamado.

    
por 06.08.2014 / 21:09
0

Se você estiver no Windows Vista ou posterior, poderá usar o PowerShell

(gc D:\input.txt) | % {$_ -replace "2014", "xxx"} | sc D:\input.txt
  • gc myPath Alias para o Get-Content ler em um arquivo
  • | canaliza o texto para o próximo comando
  • () deve ser usado, senão o arquivo de entrada ainda está aberto quando você quiser escrevê-lo de volta
  • % { ... } Alias para ForEach-Object, que percorre todas as linhas
  • -replace LookFor, ReplaceWith substitui sua string
  • sc myPath Alias do Set-Content para gravar o novo conteúdo no mesmo caminho

Leitura adicional

por 06.08.2014 / 21:31
0

Usando este script python (que vem embutido na maioria das distribuições linux e é uma instalação fácil para o Windows):

import sys

if __name__ == "__main__":
    input_file = sys.argv[1]
    output_file = sys.argv[2]

    with open(input_file) as fp:
        with open(output_file, 'w') as fp_w:
            for line in fp:
                fp_w.write("{}\n".format(line.split(' ')[2]))

Você receberá esta saída:

e:\shared\filename1.Shared
e:\shared\filename222.Shared
e:\shared\filename92.Shared

Passos para criar o script python:

  1. crie um arquivo chamado parser.py (ou seja lá como você quiser chamá-lo)
  2. copie o código acima no arquivo
  3. execute o seguinte comando:

    python parser.py test.txt test_output.txt

    Isso pressupõe que test.txt é o arquivo de entrada e test_output.txt é o caminho do arquivo no qual você deseja gravar os resultados.

por 07.08.2014 / 00:51
0

prompt de comando do Windows

for /f "tokens=2-3"   %i in (x.txt) do echo %i %j

resulta em

18:53:15 e:\shared\filename92.Shared

(ou)

for /f "tokens=3"   %i in (x.txt) do echo %i

resultar em

e:\shared\filename92.Shared
    
por 07.08.2014 / 06:29