CSVファイルの区切り文字の変更

CSVファイルの区切り文字の変更

CSV形式の入力ファイルがあります。一部のフィールドはカンマで二重引用符で囲まれています。サンプルラインです

123,"ABC, DEV 23",345,534.202,NAME

aの二重引用符内に表示されないすべてのコンマを削除する必要があるため、~出力は次のようになります。

123~"ABC, DEV 23"~345~534.202~NAME

私はこれを試しましたが、私に反対の結果を与えます。

awk -F '"' -v OFS='' '{ for (i=0; i<= NF; ++i) gsub(",","~",$i) } 1' test.txt
123,ABC~ DEV 23,345,534.202,NAME

ベストアンサー1

,デフォルトでは、区切り文字をからに置き換えるCSVファイルがあります~

使用csvkit:

$ csvformat -D '~' file.csv >newfile.csv

$ cat newfile.csv
123~ABC, DEV 23~345~534.202~NAME

cvsformat不要な引用符を削除します。到着次へ追加引用符:

$ csvformat -U 1 -D '~' file.csv
"123"~"ABC, DEV 23"~"345"~"534.202"~"NAME"

利用情報を確認してくださいcsvformat --help


使用ミラーmlr)の代わりに:

$ mlr --csv -N --ofs '~' cat file.csv
123~ABC, DEV 23~345~534.202~NAME

もはや必要なくなったとしても、元の引用を残してください。

$ mlr --csv -N --ofs '~' --quote-original cat file.csv
123~"ABC, DEV 23"~345~534.202~NAME

どちらのコマンドでも、この-Nオプションは入力にヘッダーがなく、出力にもヘッダーが含まれていないことを示すために使用されます。この--ofsオプションは出力フィールド区切り文字を設定します。

おすすめ記事