在 PowerShell 中替换 `,\r\n`

Jac*_*001 3 powershell powershell-5.0

我正在尝试修复一个带有尾随的 CSV 文件,\r\n。无论我做什么,它都无济于事。我尝试将表达式放入[]其中,使其替换每个逗号。这意味着问题在于它无法匹配换行符。

我已保存使用文本崇高的Windows行结尾的文件,并尝试的两种变化\r\n\n\r和刚\n

(Get-Content file.txt) | ForEach-Object { $_ -replace '\,\r\n', [System.Environmen
t]::NewLine } | Set-Content file2.txt
Run Code Online (Sandbox Code Playgroud)

我正在使用 PowerShell 版本 5.1.15063.413

Jac*_*001 5

PowerShell 非常......特别

Get-Content默认情况下返回一个字符串数组。它找到所有新行字符并使用它们将输入拆分为所述数组。这意味着正则表达式不存在要匹配的新行。

使用-Raw参数对这个命令的轻微变化修复了我的问题。

(Get-Content file.txt -Raw).replace(",`r`n", [System.Environment]::NewLine) | Set-Content file2.txt
Run Code Online (Sandbox Code Playgroud)

  • 对于仍然停留在 PowerShell v2 上的人来说,“-Raw”参数不可用。相反,他们可以做的是读取数组,然后使用 `(Get-Content file.txt) -join "\`n"` 重新加入它 (2认同)