powershell 使用批处理从文本文件中删除空行

de90aj5v  于 2023-08-05  发布在  Shell
关注(0)|答案(3)|浏览(193)

最近this问题被贴在stackoverflow上,我有一个和J类似的问题。Williams所做的,除了我只需要删除空行(删除空格不会伤害程序,但它只是没有必要)。当我尝试他的原始以及解决方案compo给它只清除文件,而不是删除额外的行。我在批处理文件中单独使用它。
例如:我需要这个:

Joe
Bob
Mark
Frank

Dutch
(blank line here too)

字符串
变成这样

Joe
Bob
Mark
Frank
Dutch


我也愿意将这样的解决方案附加到这个powershell脚本中,因为它给了我空白行:(Get-Content friends.txt) | Where-Object {$_ -notmatch "\bJoe\b"} | Set-Content friends.txt感谢您的帮助。

tyg4sfes

tyg4sfes1#

这应该对您有用--简而言之,它读取文件的所有行,然后只将其中包含内容的行写回文件。

$friends = Get-Content friends.txt
$friends | Where-Object { $_ } | Set-Content friends.txt

字符串

izj3ouym

izj3ouym2#

如果是一个相对较小的文件:

(Get-Content $infile) -match '\S' | Set-Content $infile

字符串
如果它太大而无法一次读入内存:

Get-Content $infile -ReadCount 1000 |
 ForeachObject {
  $_ -match '\S' |
  Add-Content $outfile
 }

pftdvrlh

pftdvrlh3#

另一种PowerShell方法是使用正则表达式模式.+Select-String cmdlet,这意味着一个或多个任何字符。另外,如果使用Set-Content,请确保使用-NoNewLine参数,以防止在末尾出现不需要的空行。(需要PS5+)

(Select-String -Path C:\example.txt -Pattern '.+' |
    Select-Object -ExpandProperty line) -join [Environment]::NewLine |
    Set-Content C:\exampleoutput.txt -NoNewline

字符串

相关问题