![Usando powershell para limpiar archivos de texto](https://rvso.com/image/668805/Usando%20powershell%20para%20limpiar%20archivos%20de%20texto.png)
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