Powershell 用一个替换两个空行

标签 powershell replace

我有生成的文本文件,每个文本 block 之间有 2 个空行。我可以使用 Notepad++ 将\r\n\r\n 替换为\r\n 来执行此操作,但必须有一种方法可以自动执行此操作。

我尝试在 Powershell 中提出一些建议,但到目前为止没有任何效果。

这是我迄今为止尝试过的:

(Get-Content .\test.txt).Replace("\n\n",'\n') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("\s+\r\n+",'\r\n') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("\r\n+",'') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("\n+",'') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("\r\n\r\n",'\r\n') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("^(\s+\r\n)",'\r\n') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("^(\s+\r\n+)",'\r\n') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("^(\r\n+)",'\r\n') | Set-Content .\test.txt
(Get-Content .\test.txt).Replace("\r\n",'\b') | Set-Content .\test.txt

最佳答案

Get-Content 返回字符串列表,而不是您需要的整段文本。显然你的意思是在一个字符串上运行这个 Replace 方法,而不是在一个字符串列表上。

使用 Get-Content -Raw .\test.txt 将文件内容加载为一个长字符串。

另外,替换的正确形式是:

Replace("`r`n`r`n", "`r`n")

总结一下:

(Get-Content -Raw .\test.txt).Replace("`r`n`r`n", "`r`n") | Set-Content .\test.txt

会做的。

另一种方法是过滤掉空行:

$data = Get-Content .\test.txt
$data | Where-Object { $_ } | Set-Content .\test.txt

关于Powershell 用一个替换两个空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023356/

相关文章:

windows - 使用脚本将 key 发送到 Tableau

web-services - 我可以使用 PowerShell 的 New-WebServiceProxy 过滤基于 WSDL 的 SOAP 查询以仅发送一个参数吗?

PowerShell相当于Linux的用户输入

powershell - ADFS PowerShell : Scripting Web API (Add-AdfsWebApiApplication) with RuleTemplate in IssuanceTransformRules

正则表达式搜索并替换为可选的复数

date - 清除具有特定参数的目录

java - StringBuffer 替换方法不起作用

regex - 如何在 sublime 文本的范围内进行 vi 搜索和替换

替换多列 R 中的值

javascript - 替换 HTML 元素中的字符