powershell - eliminar - script para borrar archivos de una carpetas por fecha
eliminar líneas vacías de archivo de texto con PowerShell (9)
Encontré un buen forro aquí >> http://www.pixelchef.net/remove-empty-lines-file-powershell . Solo lo probé con varias líneas de espacios en blanco, incluyendo solo líneas nuevas, así como líneas con espacios, tabulaciones y combinaciones.
(gc file.txt) | ? {$_.trim() -ne "" } | set-content file.txt
Vea el original para algunas notas sobre el código. Agradable :)
Sé que puedo usar:
gc c:/FileWithEmptyLines.txt | where {$_ -ne ""} > c:/FileWithNoEmptyLines.txt
para eliminar las líneas vacías. Pero, ¿cómo puedo eliminarlos con ''-rplace''?
Este fragmento de código de Randy Skretka funciona bien para mí, pero tuve el problema de que aún tenía una nueva línea al final del archivo.
(gc file.txt) | ? {$_.trim() -ne "" } | set-content file.txt
Así que agregué finalmente esto:
$content = [System.IO.File]::ReadAllText("file.txt")
$content = $content.Trim()
[System.IO.File]::WriteAllText("file.txt", $content)
Esto elimina los espacios en blanco finales y las líneas en blanco de file.txt
PS C:/Users/> (gc file.txt) | Foreach {$_.TrimEnd()} | where {$_ -ne ""} | Set-Content file.txt
Esto eliminará las líneas vacías o líneas con solo caracteres de espacios en blanco (tabulaciones / espacios).
[IO.File]::ReadAllText("FileWithEmptyLines.txt") -replace ''/s+/r/n+'', "`r`n" | Out-File "c:/FileWithNoEmptyLines.txt"
No puede hacer el reemplazo, tiene que reemplazar ALGO con ALGO, y ninguno de los dos tiene ambos.
No se usa específicamente -replace
, pero se obtiene el mismo efecto al analizar el contenido con -notmatch
y regex.
(get-content ''c:/FileWithEmptyLines.txt'') -notmatch ''^/s*$'' > c:/FileWithNoEmptyLines.txt
Puede usar -match en lugar de -eq si también desea excluir archivos que solo contienen caracteres de espacio en blanco:
@(gc c:/FileWithEmptyLines.txt) -match ''/S'' | out-file c:/FileWithNoEmptyLines
Si realmente desea filtrar líneas en blanco de un archivo, puede intentar esto:
(gc $ source_file) .Trim () | ? {$ _. Longitud -gt 0}
(Get-Content c:/FileWithEmptyLines.txt) |
Foreach { $_ -Replace "Old content", " New content" } |
Set-Content c:/FileWithEmptyLines.txt;