2017-07-11 109 views
2

我試圖修復其中包含尾隨,\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

回答

1

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