一部のフィールドのレコードの一部にカンマが含まれているCSVファイルを受け取ります。私は、行は以下のすべての値がカンマ区切りでない場合は、フィールド内のカンマを削除しますが、区切り文字は削除しません。
1,John,Wayne,"movies,actor",1950s
のように見えるメモ帳でファイルを開くときにだから私は、上記の例では4列で映画や俳優の間にコンマを削除する構文を書くためにスクランブルしており、スペースで置き換えてください。ファイルをCSV形式で出力します。
ここでは、「映画、俳優」の文字列全体をスペースで置き換えた以下の記事を紹介します。
(Get-Content $path) -replace '(".*),(.*")',' ' | Out-File -Encoding UTF8 $newpath
カンマのみをスペースで置き換えるにはどうすればよいですか?
これは、掲載されたOPで動作しますが、遅かれ早かれ破綻するでしょう。ファイルに '1、John、Wayne、" movies、actor "、" 1950s "のようなものが含まれている場合。あなたは非貪欲な検索を使って調整することができますが、誰かがそれを破る入力を思いつくことができると確信しています。結局のところ、最も堅牢なソリューションはNickが投稿したものです。 –
私はニックスも壊す入力を思いつくことができるとかなり確信しています:)しかし、私はあなたのポイントを取る。非貪欲型または単語マッチングに変更すると、それが複数の値を含むことができる唯一のフィールドだとすれば、それをかなり簡単に解決できます。しかし、他のすべての分野でも引用符やカンマを考慮する解決策が必要な場合は、全く異なる解決策が必要です。 –
@ MarkJakobsenここでは、OPは、csvのすべての列からコンマを削除しても問題ないことを前提にしています。 – Nick