Usando powershell para limpiar archivos de texto

Usando powershell para limpiar archivos de texto

He estado luchando con esto y me pregunto si alguien puede ayudar. Tengo un archivo de texto grande que contiene datos adicionales que quiero eliminar. Aquí hay una muestra del archivo 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

Quiero eliminar lo siguiente:

  • Cualquier línea en blanco
  • Cualquier " al principio de las líneas
  • Cualquier línea que comience con una letra AZ, az

Entonces con el ejemplo anterior me quedaría

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

Respuesta1

Estoy pensando:

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

Que hace:

  • obtenga las líneas del archivo y, si el primer carácter es una cita, reemplácela por nada
  • seleccione líneas que coincidan con "no espacios en blanco" (es decir, las líneas vacías se filtran)
  • seleccione líneas que no comiencen con A-Za-z
  • escribe los resultados en out.txt

Hay varias formas de escribir la versión larga dependiendo de cuánto le guste encadenar cosas con la canalización en lugar de trabajar con variables una y otra vez, pero se hace esto:

$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

información relacionada