Imprima solo las líneas no vacías en PowerShell.
Tengo un archivo de texto con múltiples líneas. Muchas están en blanco, o al menos eso deduzco al mirar el contenido del archivo. Me gustaría escribir/imprimir solamente las líneas que contengan texto. Estoy teniendo problemas. Aquí está mi código:
$test = Get-Content -Path '.\dummy-file.html'
<h1>convertir archivo html a texto, guardar solo la información relevante (sin etiquetas)</h1>
foreach ($line in $test) {
$newline = $line -split ('<.<em>?>') -split ('{.</em>?}') # eliminar etiquetas html y css
$newline -replace "`n","" # pensé que esto eliminaría las líneas en blanco, pero no lo hace
$newline >> "test-ouput.txt" # guardar en un archivo nuevo
}
<h1>leer archivo de texto, imprimir solo las líneas con texto</h1>
$test.ForEach({$_ -notmatch "`n"})
davy.ai
Para imprimir solo las líneas que contienen texto, puedes modificar la última línea de tu código para filtrar las líneas en blanco usando el operador “-ne”:
Explicación:
– El cmdlet
Get-Content
lee el contenido del archivo– El cmdlet
ForEach-Object
aplica un bloque de script a cada elemento en la tubería–
$_
representa el elemento actual (es decir, cada línea del archivo)– El operador
-split
divide una cadena en un arreglo según un delimitador (por ejemplo, ‘<.*?>’)– El operador
-join
concatena un arreglo en una cadena– El método
Trim()
elimina cualquier espacio en blanco al inicio o al final– El cmdlet
Where-Object
filtra los elementos según una condición (es decir, si la línea no está vacía)– El cmdlet
Out-File
guarda las líneas filtradas en un archivo de textoTen en cuenta que eliminé la variable intermedia “$test” y usé la tubería en su lugar, lo cual es más eficiente para archivos grandes.