AWKまたはSEDを使用したCSV解析

AWKまたはSEDを使用したCSV解析

長い間(AWKまたはSED)を使用して私のcsvファイルをクリーンアップしようとしています。

csvファイルは次のとおりです。

id,name,contact-type,contact
"1","toto corp","tel","+123456789"
"1","toto corp","fax","+198765432"
"1","toto corp","site","totocorp.com"
"2","Namek corp","tel","+14377678563"
"2","Namek corp","fax","+19867334565"
"2","Namek corp","site","Namekcorp.com"

私は次の出力が欲しい:

id,name,tel,fax,site
"1","toto corp","+123456789","+198765432","totocorp.com"
"2","Namek corp","+14377678563","+19867334565","Namekcorp.com"

お問い合わせありがとうございます!

ベストアンサー1

愚かな解決策:

awk 'BEGIN{ FS=OFS=","; print "id,name,tel,fax,site" }
     { gsub(/"/,"",$3); a[$1][$3]=$4; if(!a[$1]["name"]) a[$1]["name"]=$2; }
     END { for(i in a) print i,a[i]["name"],a[i]["tel"],a[i]["fax"],a[i]["site"] }' file

出力:

id,name,tel,fax,site
"1","toto corp","+123456789","+198765432","totocorp.com"
"2","Namek corp","+14377678563","+19867334565","Namekcorp.com"

  • a[$1][$3]=$4id- フィールド値を親キーとして使用し、フィールドcontact-type値をネストした配列のキーとして使用する多次元配列

おすすめ記事