フィールドにカンマが含まれている場合は、「cut」コマンドを使用してCSVファイルのフィールドを切り捨てるにはどうすればよいですか?

フィールドにカンマが含まれている場合は、「cut」コマンドを使用してCSVファイルのフィールドを切り捨てるにはどうすればよいですか?

CSVファイル形式のデータは次のとおりです。

"Pizza,wings,icecream","hopper","0",,"Masdfasdf","USA","381","10 AM","cap",,,"monster"

以下に示すように、カンマを区切り文字として使用すると、カンマ付きのフィールドは区切り文字として計算されますが、これは私が望むものではありません。

cat /path/to/file | cut -d , -f2

戻ってくる

wings

欲しいとき

hopper

論理的な解決策を見つけたようですが、どのように実装するのかわかりません。

「別のカンマや引用符で囲まれたカンマであれば、私を区切り文字と見なします」という区切り文字をどのように作成しますか?


はい

[tksmith@rifle ~]$ cat deleteme 

"Pizza,wings,icecream","hopper","0",,"Masdfasdf","USA","381","10 AM","cap",,,"monster"

[tksmith@rifle ~]$ cat deleteme | cut -d , -f2

wings

ベストアンサー1

CSV形式には再分析を望まないほど極端なケースが多い。正しいCSVパーサーを使用してください。例えば、ルビーを使うと

ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|row| puts row[1]}' file

おすすめ記事