.csvを3列と1行に変換する

.csvを3列と1行に変換する

入力例:

ID、製品1、製品2、製品3、製品4
1,0.1,0.3,0.8,0.7
2,0.6,0.7,0.5,0.9

出力は次のようになります。

ID、製品名、製品値
1、製品1、0.1
1.製品2、0.3
1.製品3、0.8
1、製品4、0.7
2.製品1,0.6
2. 製品 2,0.7
3.製品3、0.5

私は試した

awk -F, 'NR==1 { for (i=1; i<=NF; i++) sn[i]=$i }
         NR>1 { for (i=1; i<=NF; i++) print sn[i] "," $i;}' filename.csv

答え1

簡単に追加できる新しいヘッダーに加えて、追加する方法は次のとおりです。

awk -F, 'NR==1 { for (i=2; i<=NF; i++) sn[i]=$i }
     NR>1 { for (i=2; i<=NF; i++) print $1 "," sn[i] "," $i }' filename.csv

関連情報