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

时间:2017-07-11 21:11:10

标签: powershell powershell-v5.0

我正在尝试修复其中包含尾随,\r\n的CSV文件。无论我做什么,它根本不做任何事情。我尝试将表达式放在[]中,这使得它替换每个逗号。这意味着问题在于它无法与换行符匹配。

我使用Sublime Text保存了包含Windows行结尾的文件,并尝试了\r\n\n\r\n的两种变体。

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

我正在使用PowerShell版本5.1.15063.413

1 个答案:

答案 0 :(得分:1)

PowerShell非常...... 特殊

默认情况下,

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

使用-Raw参数对此命令略有不同,修复了我的问题。

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