カンマを縦棒で置き換え(二重引用符を除く)、二重引用符を削除します。

カンマを縦棒で置き換え(二重引用符を除く)、二重引用符を削除します。

ファイル1

12584,"Capital of America, Inc.",,HORIZONCAPITAL,USA,......etc
25841,"Capital of America, Inc.",,HORIZONCAPITAL,USA,......etc
87455,"Capital of America, Inc.",,HORIZONCAPITAL,USA,......etc

出力

12584|Capital of America, Inc.||HORIZONCAPITAL|USA|......etc
25841|Capital of America, Inc.||HORIZONCAPITAL|USA|......etc
87455|Capital of America, Inc.||HORIZONCAPITAL|USA|......etc

csvファイルがあり、パイプ(|)で区切られたテキストファイルに変換する必要があります。シェルスクリプトを完了しました。sed 's/^/"/;s/,/|/g;s/$/"/' $File > $Output

ところが問題は「US Capital Corporation」分野だ。カンマが含まれており、パイプ(|)に置き換えられます。だから私はすべてをパイプに置き換えたいのですが、値の中に二重引用符 ""を与えません。

これを実行できるシェルスクリプトはありますか?

ベストアンサー1

使用csvkit:

$ csvformat -D '|' file.csv
12584|Capital of America, Inc.||HORIZONCAPITAL|USA|......etc
25841|Capital of America, Inc.||HORIZONCAPITAL|USA|......etc
87455|Capital of America, Inc.||HORIZONCAPITAL|USA|......etc

csvkitPythonで作成されたCSV操作/クエリツールバー。正しいCSV解析が可能で、デフォルトのcsvformatカンマ区切り文字を別の文字に置き換えるために使用できます。このユーティリティは、結果がCSVルールに従って正しく引用されていることを確認します。

おすすめ記事