使用powershell从csv文件替换不在双引号逗号("")内的逗号?

时间:2014-10-11 11:45:12

标签: regex windows powershell csv

我有一个巨大的csv文件(大约100GB)。我的问题是我需要用分号(;)替换文件中的逗号(,),除了双重逗号("")之外的逗号。

我尝试了几种方法,但似乎都没有。此修改也需要在Windows上,因此sed和awk不可用。

例:
输入:" A,B,C",D,E," FG"," H,J",K
输出:" A,B,C&#34 ;; D; R;" FG&#34 ;; H,J; K

完成后,我需要删除"。

我可以删除"从文件中可以看出,但是每次更换分号都会失败。

如果可以通过Powershell实现,请告知我们。

1 个答案:

答案 0 :(得分:1)

这应该处理分隔符替换和删除双引号:

 Get-Content ./File.csv -ReadCount 1000 |
 foreach { $_ -replace ',(?=(?:[^"]|"[^"]*")*$)',';' -replace '"' } |
 Add-Content ./NewFile.csv 

并且无需第三方实用程序即可高效处理大型文件。