【发布时间】:2021-07-21 16:06:31
【问题描述】:
我有一个 .txt 文件,其中一些行以 LF 结尾(此处不应有新行),部分以 CRLF 结尾。如何删除 LF 并离开 CRLF?
这是我的原始文件内容:
我正在尝试以下代码(不起作用,因为它不会删除不必要的换行符 (LF))
(Get-Content $path -Raw).Replace("(?!\r)\n"," ") | Set-Content $path -Force
这是我想要的结果
为了清楚起见,因此,目的是用单个空格字符替换所有LF 字符,这些字符不是直接以CR 字符开头。
附注任何 PowerShell 代码都必须与 2.0 版兼容
【问题讨论】:
-
顺便说一句,在
PowerShell中,我可能会尝试这样:(Get-Content -Path $path -Raw) -Replace '(?<!\x0D)\x0A',' ' … -
我试过这个
(Get-Content -Path $path -Raw) -Replace '(?<!\x0D)\x0A',' ' | Set-Content $path -Force,一切都很好,除了我在每行之后得到一个额外的CRLF。我该如何解决这个问题? -
请编辑您的问题以包含您正在使用的 PowerShell 版本,并最好包含其适当的标签。我们无法猜测您的 PowerShell 版本至少不是第 5 版,(包含在 Windows 10 版本中并发布了 5½ 年),其中包括您需要的
-NoNewLine选项和Set-Content. -
我知道,但我需要它才能在不同的机器上工作,包括过时的机器(从 Windows 7 开始)。该问题已被编辑。
-
我已经进一步编辑了您的问题以澄清因为放置 PowerShell 4,虽然它在版本 5 中排除了带有
Set-Content的-NoNewLine选项,但并没有告诉您的潜在响应者这必须能够在 [windows-7] 中进行默认安装
标签: powershell batch-file powershell-2.0