es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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"})

Tags:  , ,

Answer

  1. Avatar for 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”:

    Get-Content -Path '.\dummy-file.html' `
    | ForEach-Object { ($_ -split '<.*?>' -split '{.*?}' -join '').Trim() } `
    | Where-Object { $_ -ne "" } `
    | Out-File -FilePath 'test-output.txt'
    

    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 texto

    Ten 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.

Comments are closed.