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
オプションは出力フィールド区切り文字を設定します。