So che posso usare:rimuovere le righe vuote da file di testo con PowerShell
gc c:\FileWithEmptyLines.txt | where {$_ -ne ""} > c:\FileWithNoEmptyLines.txt
per rimuovere le linee vuote. Ma come posso rimuoverli con '-replace'?
So che posso usare:rimuovere le righe vuote da file di testo con PowerShell
gc c:\FileWithEmptyLines.txt | where {$_ -ne ""} > c:\FileWithNoEmptyLines.txt
per rimuovere le linee vuote. Ma come posso rimuoverli con '-replace'?
Non si può fare la sostituzione, è necessario sostituire QUALCOSA con QUALCOSA, e non avete entrambi.
è il supporto di Poowerhell -remove "" per rimuovere linee emply? – Suliman
No, sembra che non abbia il supporto di "-remove". – Suliman
Stai parlando di mele e arance. Rimuovi e sostituisci sono chiaramente diversi. Quello che hai funzionerà fondamentalmente, ma forse stai cercando di ricostruire il file esistente ma senza gli spazi vuoti. PS C: \> $ text = get-content a.txt PS C: \> $ testo | dove {$ _} | out-file a.txt –
Questo rimuoverà linee o righe vuote con solo caratteri di spazi (tab/spazi).
[IO.File]::ReadAllText("FileWithEmptyLines.txt") -replace '\s+\r\n+', "`r`n" | Out-File "c:\FileWithNoEmptyLines.txt"
È possibile utilizzare -match invece eq se si vuole anche escludere i file che contengono solo caratteri di spaziatura:
@(gc c:\FileWithEmptyLines.txt) -match '\S' | out-file c:\FileWithNoEmptyLines
ho trovato un bel uno di linea qui >>http://www.pixelchef.net/remove-empty-lines-file-powershell. È stato testato con diverse righe di spazi vuoti, incluse le nuove righe e le linee con solo spazi, solo schede e combinazioni.
(gc file.txt) | ? {$_.trim() -ne "" } | set-content file.txt
Vedere l'originale per alcune note sul codice. Nizza :)
Penso che a bilanciamento preferisco '(gc file.txt) | ? {-not $ _. IsNullOrWhiteSpace()} | set-content file.txt' perché esprime l'intento in modo più chiaro, ma equivale alla stessa cosa. –
A colpo d'occhio, non sembra che abbia il metodo "IsNullOrWhiteSpace()" sulle mie stringhe ... e ... come potrebbe un metodo di istanza controllare null? La risposta postata funziona benissimo però! – xdhmoore
IsNullOrWhiteSpace è un metodo statico dell'oggetto System.String il modo corretto di chiamarlo in PowerShell è il seguente: '[String] :: IsNullOrWhiteSpace ({your string})'. La corretta riga di comando sul commento di Neil Barnwell è la seguente: '(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;
PS: so che è molto vecchio durante il giorno, ma anche qualcun altro potrebbe trarne beneficio .. – Nonso
Questo rimuove gli spazi finali e le righe vuote da file.txt
PS C:\Users\> (gc file.txt) | Foreach {$_.TrimEnd()} | where {$_ -ne ""} | Set-Content file.txt
Non specificamente utilizzando -replace
, ma si ottiene lo stesso effetto l'analisi del contenuto utilizzando -notmatch
e regex.
(get-content 'c:\FileWithEmptyLines.txt') -notmatch '^\s*$' > c:\FileWithNoEmptyLines.txt
Questo pezzo di codice da Randy Skretka sta lavorando bene per me, ma ho avuto il problema, che avevo ancora una nuova riga alla fine del file.
(gc file.txt) | ? {$_.trim() -ne "" } | set-content file.txt
così ho aggiunto finalmente questo:
$content = [System.IO.File]::ReadAllText("file.txt")
$content = $content.Trim()
[System.IO.File]::WriteAllText("file.txt", $content)
Se effettivamente desidera filtrare le righe vuote da un file, allora si può provare questo:
(gc $ source_file) .Trim() | ? {$ _. Lunghezza -gt 0}
Perché si desidera sostituire? E lavora sul tuo tasso di accettazione – manojlds
La mia risposta rimuove le righe vuote con '-replace' [operatore di confronto] (http://technet.microsoft.com/en-us/library/dd315321.aspx). 'Get-Content' non ha un parametro di sostituzione, quindi presumo che tu stia cercando un modo per farlo con l'operatore. –