csvを使用すると、不要なカンマ( '、')が原因でcsvファイルが誤って表示され、不一致が発生します。
以下をご覧ください。
私のサンプルCSVファイル:
1|a,b|4
1|c,d|4
1|e,f|4
1|g,h|4
1|i,j|4
私が望む最終結果は次のとおりです。
1|"a,b"|4
1|"c,d"|4
1|"e,f"|4
1|"g,h"|4
1|"i,j"|4
引用符を追加した後、「|」を「」に置き換えると、私のCSVは期待どおりに機能します。
以下のコマンドを使用しましたが、期待どおりに提供されません。
sed -e 's/,/"&"/' file1.txt
ベストアンサー1
csvformat
以下で使用csvkit
、最終結果は、カンマを区切り文字として使用するCSVファイルでなければならないと仮定します(質問テキストに記載されているように)。
$ csvformat -d '|' file
1,"a,b",4
1,"c,d",4
1,"e,f",4
1,"g,h",4
1,"i,j",4
これにより、CSVファイルの|
形式は - 文字を区切り文字として使用することから、デフォルトのカンマを区切り文字として使用することに戻ります。これにより、参照する必要があるフィールドが正しく参照されます。
これはまた、改行を含むフィールドを正しく処理します。
$ cat file
1|a,b|4
1|c,d|4
1|e,f|4
1|g,h|4
1|i,j|4
2|"line 1,
line2"|5
$ csvformat -d '|' file
1,"a,b",4
1,"c,d",4
1,"e,f",4
1,"g,h",4
1,"i,j",4
2,"line 1,
line2",5
CSV、JSON、XML、YAML、TOMLなどの構造化文書形式の文書がある場合は、理由はありません。いいえその文書形式のパーサーを使用して文書を解析します。