如果文件中的某行在powershell中为空,则删除该行

如果文件中的某行在powershell中为空,则删除该行,powershell,powershell-2.0,Powershell,Powershell 2.0,如何删除文件中的空行 当我搜索它时,人们正在创建另一个文件来移动非空行,如下所示 gc c:\FileWithEmptyLines.txt | where {$_ -ne ""} > c:\FileWithNoEmptyLines.txt 有没有办法删除源文件本身中的行?为什么不能将其保存回同一个文件?将其拆分为两行: $var = gc c:\PST\1.txt | Where {$_ -ne ""} $var > c:\pst\1.txt 跳过与空格、制表符或换行符匹配的行:

如何删除文件中的空行

当我搜索它时,人们正在创建另一个文件来移动非空行,如下所示

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

有没有办法删除源文件本身中的行?

为什么不能将其保存回同一个文件?将其拆分为两行:

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

跳过与空格、制表符或换行符匹配的行:

(Get-Content c:\FileWithEmptyLines.txt) | `
  Where-Object {$_ -match '\S'} | `
   Out-File c:\FileWithEmptyLines.txt
更新:对于多个文件:

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

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

如果我尝试了,它会删除所有内容。重定向操作员将删除该文件。如果我使用append>>重定向,它将以无限循环结束,文件大小将变得非常庞大,如果您有一行只包含制表符(例如“`t”),$ne“”将不会跳过它。Hanks dude,这个答案也很有用。伙计,我想您错过了一个}。请更新它,我需要在那之后勾选答案谢谢你的提醒,修正了。我有两个where对象调用和一个缺少的大括号:)buddy,当您的解决方案使用多个文件执行时,它会失败。例如:$File=Get ChildItem-Path“E:\copyforbuild\*xcopy.txt”Foreach($f in$File){$var=Get Content($f)| ` where对象{$\匹配'\S'}| ` Out File$f}。当我使用拆分两行时,它工作得很好。这个如何:$File=getchilditem-Path“E:\copyforbuild*xcopy.txt”;Foreach($File中的f){(获取内容$f.FullName)|其中对象{$\匹配'\S'}|输出文件$f.FullName}