Sé que puedo usar:eliminar las líneas vacías de archivo de texto con PowerShell
gc c:\FileWithEmptyLines.txt | where {$_ -ne ""} > c:\FileWithNoEmptyLines.txt
para eliminar las líneas vacías. Pero, ¿cómo puedo eliminarlos con '-replace'?
Sé que puedo usar:eliminar las líneas vacías de archivo de texto con PowerShell
gc c:\FileWithEmptyLines.txt | where {$_ -ne ""} > c:\FileWithNoEmptyLines.txt
para eliminar las líneas vacías. Pero, ¿cómo puedo eliminarlos con '-replace'?
No puede reemplazar, tiene que reemplazar ALGO con ALGO, y usted tampoco tiene ambos.
es el soporte de Poowershell -remover "" para eliminar las líneas emply? – Suliman
No, parece que no tiene soporte para "-remove". – Suliman
Estás hablando de manzanas y naranjas. Eliminar y reemplazar son claramente diferentes. Lo que tienes, básicamente, funcionará, pero tal vez estés tratando de reconstruir el archivo existente, pero sin los espacios en blanco. PS C: \> $ text = get-content a.txt PD C: \> $ text | donde {$ _} | out-file a.txt –
Esto eliminará las líneas o líneas vacías con solo espacios en blanco (pestañas/espacios).
[IO.File]::ReadAllText("FileWithEmptyLines.txt") -replace '\s+\r\n+', "`r`n" | Out-File "c:\FileWithNoEmptyLines.txt"
Usted puede utilizar -match lugar eq si también desea excluir archivos que sólo contienen espacios en blanco:
@(gc c:\FileWithEmptyLines.txt) -match '\S' | out-file c:\FileWithNoEmptyLines
me encontré con un buen chiste aquí >>http://www.pixelchef.net/remove-empty-lines-file-powershell. Simplemente lo probé con varias líneas de espacios en blanco, incluidas líneas nuevas, así como líneas con espacios, solo pestañas y combinaciones.
(gc file.txt) | ? {$_.trim() -ne "" } | set-content file.txt
Consulte el original para algunas notas sobre el código. Agradable :)
Creo que en balance prefiero '(gc file.txt) | ? {-not $ _. IsNullOrWhiteSpace()} | set-content file.txt' porque expresa la intención más claramente, pero equivale a lo mismo. –
En un breve vistazo, no parece tener el método "IsNullOrWhiteSpace()" en mis cadenas ... y ... ¿cómo podría un método de instancia comprobar nulo? ¡La respuesta publicada funciona muy bien! – xdhmoore
El IsNullOrWhiteSpace es un método estático del objeto System.String, la forma correcta de llamarlo en PowerShell es el siguiente: '[String] :: IsNullOrWhiteSpace ({your string})'. La línea de comando correcta en el comentario de Neil Barnwell es la siguiente: '(gc file.txt) | ? {-not [String] :: IsNullOrWhiteSpace ($ _)} | set-content file.txt' – LMA1980
(Get-Content c:\FileWithEmptyLines.txt) |
Foreach { $_ -Replace "Old content", " New content" } |
Set-Content c:\FileWithEmptyLines.txt;
PD: sé que esto es muy viejo en el día, pero otros también podrían beneficiarse .. – Nonso
Esto elimina espacios en blanco y las líneas en blanco archivo.txt
PS C:\Users\> (gc file.txt) | Foreach {$_.TrimEnd()} | where {$_ -ne ""} | Set-Content file.txt
No específicamente utilizando -replace
, pero se obtiene el mismo efecto al analizar el contenido usando -notmatch
y expresiones regulares.
(get-content 'c:\FileWithEmptyLines.txt') -notmatch '^\s*$' > c:\FileWithNoEmptyLines.txt
Esta pieza de código de Randy Skretka está trabajando muy bien para mí, pero tenía el problema, que todavía tenía una nueva línea al final del archivo.
(gc file.txt) | ? {$_.trim() -ne "" } | set-content file.txt
por lo que añade finalmente esto:
$content = [System.IO.File]::ReadAllText("file.txt")
$content = $content.Trim()
[System.IO.File]::WriteAllText("file.txt", $content)
Si realmente se desea filtrar líneas en blanco de un archivo, entonces puede intentar esto:
(GC $ source_file) .Trim() | ? {$ _. Length -gt 0}
¿Por qué quieres reemplazar? Y trabaje en su tasa de aceptación – manojlds
Mi respuesta elimina las líneas vacías con '-replace' [operador de comparación] (http://technet.microsoft.com/en-us/library/dd315321.aspx). 'Get-Content' no tiene un parámetro de reemplazo, así que supongo que está buscando una forma de hacerlo con el operador. –