2011-12-30 3 views
2

Как удалить пустую строку в файле?Удалить строку в файле, если она пуста в powershell

Когда я искал его, люди создают еще один файл, чтобы переместить непустую строку нравится следующий

gc c:\FileWithEmptyLines.txt | where {$_ -ne ""} > c:\FileWithNoEmptyLines.txt 

Есть ли способ, чтобы удалить строку в самом исходном файле?

ответ

3

Пропустить строки, которые соответствуют пространство, вкладки или разрыв строки:

(Get-Content c:\FileWithEmptyLines.txt) | ` 
    Where-Object {$_ -match '\S'} | ` 
    Out-File c:\FileWithEmptyLines.txt 

UPDATE: для нескольких файлов:

$file = Get-ChildItem -Path "E:\copyforbuild*xcopy.txt" 

foreach ($f in $file) 
{ 
    (Get-Content $f.FullName) | ` 
     Where-Object {$_ -match '\S'} | ` 
     Out-File $f.FullName 
} 
+0

приятель, я думаю, вы пропустили}. Пожалуйста, обновите его, мне нужно пометить ответ после этого. – Samselvaprabu

+0

Спасибо за головы, исправлены. У меня было два вызова объекта-объекта и отсутствующая скобка :) –

+0

приятель, когда ваше решение выполняется с несколькими файлами, оно не работает. Для ex: $ File = Get-ChildItem -Path "E: \ copyforbuild \ * xcopy.txt" Foreach ($ F в $ File) { $ Var = Get-Content ($ е) | ' Where-Object {$ _ -match '\ S'} |' Out-File $ е } , когда я использую разделить его на две строки, он отлично работает. – Samselvaprabu

4

Почему вы не можете сохранить их в одном файле? Разделить его на 2 линии:

$var = gc c:\PST\1.txt | Where {$_ -ne ""} 
$var > c:\pst\1.txt 
+0

Если я пробовал , он удаляет все содержимое. Оператор перенаправления удалит файл. Если я использую append >> redirect, это закончится бесконечным циклом, а размер файла будет губительным. – Samselvaprabu

+0

Я обновил ответ –

+0

fyi. Если у вас есть строка, содержащая только символ табуляции (например, «' t »), $ _ -ne "" не пропустит его –