awkを使用して列を行に置き換え、データの最初の列を繰り返します。

awkを使用して列を行に置き換え、データの最初の列を繰り返します。

test.txtに入力した内容は次のとおりです。

month,var1,var2
June,10,a
Sep,20,b
Dec,30,c

私が望む出力は

month,variable,value
June,var1,10
June,var2,a
Sep,var1,20
Sep,var2,b
Dec,var1,30
Dec,var2,c

2番目の列から始まる列数は動的です。 2つの列または100の列を持つことができます。 awkを使用してデータをどのように転置できますか?

ベストアンサー1

努力する

$ awk -F, '
    BEGIN{OFS=FS} 
    NR==1{n = split($0,a); print "month,variable,value"; next}
    {for(i=2;i<4;i++) print $1,a[i],$i}
' file
month,variable,value
June,var1,10
June,var2,a
Sep,var1,20
Sep,var2,b
Dec,var1,30
Dec,var2,c

(これは前歯というよりは爆発に近いです。)

おすすめ記事