【发布时间】:2020-09-01 15:39:34
【问题描述】:
我有一个文本文件,我想删除该文件中的最后一个换行符:
Text
在 Powershell 中使用以下正则表达式:
(Get-Content .\test.txt -Raw) -replace ('\r\n(?=$)', '') | Set-Content .\test.txt
但这不起作用。
我已尝试将正则表达式模式:\r\n(?=$) 在 Notepad++ 和 Java 中替换为 '' 并且它正在工作。
我怎样才能让它在 Powershell 中工作?
【问题讨论】:
-
你为什么不直接
string.Trim()呢? -
Get-Content已经在\r?\n上拆分,因此您正在操作的输出实际上不会包含换行符。听起来你想要...|Set-Content -NoNewline虽然 -
@MathiasR.Jessen
-NoNewline开关完全符合我的要求。 -
@MathiasR.Jessen 但我不明白你的第一点,因为当我尝试用
('\r\n', '')替换所有换行符时,它会完成除了最后一个换行符之外的工作。所以我认为-Raw开关确实通过将换行符放入字符串来忽略换行符,但保留它并使其可用于正则表达式。所以最后为什么('\r\n(?=$)不起作用的问题对我来说仍然存在。你能解释一下吗? -
-replace可以很好地删除换行符,但Set-Content会在后面追加一个尾随行结束序列。
标签: regex powershell regex-lookarounds