替换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
答
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
'Get-Content file.txt | ForEach-Object {$ _。TrimEnd(',')} |设置内容file2.txt'?或者简写为'gc file.txt | %TrimEnd','| sc file2.txt' – TessellatingHeckler