我收到一个CSV文件,其中某些字段的某些记录在其中包含逗号。所以,当我在记事本打开该文件中的一行看起来如下当并非所有值都以逗号分隔时,在PowerShell中删除逗号而不是分隔符
1,John,Wayne,"movies,actor",1950s
我已经炒写的语法来删除电影和演员之间的逗号第4列在上面的例子,用空格替换它。然后再将该文件输出为CSV。
下面是我在下面,它用空格替换整个字符串“电影,演员”。
(Get-Content $path) -replace '(".*),(.*")',' ' | Out-File -Encoding UTF8 $newpath
如何仅替换空格的逗号?
这适用于OP发布的内容,但迟早会中断。如果这些文件包含“1,约翰,韦恩”,“电影,演员”,“20世纪50年代”等。您可以通过使用非贪婪搜索来进行调整,但我相当有信心有人可以提出一个输入来打破这一点。最后,最强大的解决方案就是Nick发布的内容。 –
我非常有信心我可以想出一个可以打破尼克斯的输入:)但我明白你的观点。更改为非贪婪或单词匹配将相当容易地解决,假设这是唯一可以包含多个值的字段。但是,如果需要解决所有其他领域中可能的引号和逗号的解决方案,则需要完全不同的解决方案。 –
@MarkJakobsen你在这里做了一个假设:OP很好,从csv的每一列中删除了逗号,尽管OP声明第4列是他想从逗号中删除的那一列。 – Nick