Usando o powershell para limpar o arquivo de texto

1

Estou lutando com isso e me pergunto se alguém pode ajudar. Eu tenho um arquivo de texto grande que tem dados extras que eu quero retirar. Aqui está uma amostra do arquivo de entrada:

Text In Page - 1

S
Dept
l<m RKB)
"1915
slightly 234234
"sil dsf 56
"gr
gl
1920 100
1925 100
1930 100 Cls
"1935 100 Cl


Text In Page - 2

l<m RKB)
"1915
slightly
"sil
"gr
glauc
1920 100
1925 100
1930 100 Cls
"1935 100 Cl

Eu quero remover o seguinte:

  • Quaisquer linhas em branco
  • Qualquer "no começo das linhas
  • Todas as linhas que começam com uma letra A-Z, a-z

Então, com o exemplo acima, ficaria com

1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
    
por FredZ 15.10.2015 / 19:32

1 resposta

5

Estou pensando:

(gc D:\test.txt) -replace '^"' | sls '\S' | sls -NotMatch '^[A-Za-z]' | sc out.txt

O que faz:

  • obtenha as linhas do arquivo e, se o primeiro caractere for uma citação, substitua-o por nada
  • selecione as linhas que correspondem a "não espaço em branco" (isto é, linhas vazias são filtradas)
  • selecione linhas que não começam com A-Za-z
  • grava os resultados em out.txt

Existem várias maneiras de escrever a versão longa, dependendo do quanto você gosta de encadear coisas com o pipeline, em vez de trabalhar com variáveis repetidamente, mas está fazendo isso:

$lines = Get-Content D:\test.txt
$lines = $lines -replace '^"'
$lines = $lines | Select-String '\S'
$lines = $lines | Select-String -NotMatch '^[A-Za-z]'
$lines | Set-Content out.txt
    
por 15.10.2015 / 20:02

Tags