我收到一個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