我正在使用类似
(Get-Content $_.FullName | SomefilterHere ) | ? {$_.Trim() -ne "" } | Set-Content $_.FullName
处理文件。
它应用了一些Regex过滤器(此处不相关的细节),然后删除空行,最后所有空文件再次写出文件。
现在的事情是,输入文件的最后一行上有一些文本,而没有最后一行(在Windows中是CRLF)。
但是上面的结果将在最后一行生成换行符。 我不想那样 我该如何避免呢?
请注意,这与每行上的换行无关,而仅与输出文件的最后一行有关。 似乎Set-Content默认会生成一个。
答案 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