Usando o PowerShell para limpar arquivo de texto

Usando o PowerShell para limpar arquivo de texto

Estou lutando com isso e me perguntando se alguém pode ajudar. Eu tenho um arquivo de texto grande que contém dados extras que desejo remover. Aqui está um exemplo 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

Quero remover o seguinte:

  • Quaisquer linhas em branco
  • Qualquer "no início das linhas
  • Quaisquer linhas que comecem com uma letra AZ, az

Então, com o exemplo acima, eu ficaria com

1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl

Responder1

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 aspa, substitua-o por nada
  • selecione linhas que correspondam a "não espaços em branco" (ou seja, 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 de quanto você gosta de encadear coisas com o pipeline em vez de trabalhar com variáveis ​​continuamente, mas está fazendo o seguinte:

$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

informação relacionada