Powershell:避免将换行符作为文件的最后一个字符

时间:2019-04-25 16:11:31

标签: powershell

我正在使用类似

(Get-Content $_.FullName | SomefilterHere ) | ? {$_.Trim() -ne "" } | Set-Content $_.FullName

处理文件。

它应用了一些Regex过滤器(此处不相关的细节),然后删除空行,最后所有空文件再次写出文件。

现在的事情是,输入文件的最后一行上有一些文本,而没有最后一行(在Windows中是CRLF)。

但是上面的结果将在最后一行生成换行符。 我不想那样 我该如何避免呢?

请注意,这与每行上的换行无关,而仅与输出文件的最后一行有关。 似乎Set-Content默认会生成一个。

1 个答案:

答案 0 :(得分:1)

您可以使用Out-String将文件内容转换为字符串。然后只需对最终的CRLF(\r\n$)进行替换即可。最后,使用Set-Content参数运行-NoNewLine

((Get-Content $_.FullName | SomefilterHere ) | ? {
   $_.Trim() -ne "" } | Out-String) -Replace "\r\n$" | 
   Set-Content $_.FullName -NoNewLine