替换PowerShell中的`\ r \ n`

问题描述:

我试图修复其中包含尾随,\r\n的CSV文件。无论我做什么,它都不会做任何事情。我试着把表达式放在[]里面,这样就可以替换每一个逗号。这意味着问题是它不能匹配换行符。替换PowerShell中的` r n`

我已经使用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

+2

'Get-Content file.txt | ForEach-Object {$ _。TrimEnd(',')} |设置内容file2.txt'?或者简写为'gc file.txt | %TrimEnd','| sc file2.txt' – TessellatingHeckler

PowerShell的结果是相当... 特殊。默认返回一个字符串数组。它找到所有新的行字符并使用它们将输入拆分成所述数组。这意味着不存在用于匹配正则表达式的新行。

使用参数-Raw解决了我的问题,该命令略有变化。

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

对于仍然停留在PowerShell v2中的用户,'-Raw'参数不可用。相反,他们可以做的是在数组中读取,然后用'(Get-Content file.txt)重新加入“ - ”n“ – TheMadTechnician