Transforme .csv em 3 colunas e uma linha

2

Entrada de amostra:

id,Product1,Product2,Product3,Product4
1,0.1,0.3,0.8,0.7
2,0.6,0.7,0.5,0.9

Eu preciso de saída como:

id,productname,product_val
1,Product1,0.1
1,Product2,0.3
1,Product3,0.8
1,Product4,0.7
2,Product1,0.6
2.Product2,0.7
3,Product3,0.5

Eu tentei

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
    
por Hardik 17.03.2015 / 08:12

1 resposta

3

Com exceção dos novos títulos, que você pode adicionar facilmente, isso acontece:

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
    
por 17.03.2015 / 08:21