bet*_*tty 4 awk text-processing
我有一些这种格式的数据;-
Type,Fac1,Fac2,Fac3
1,0.1,0.1,0.1
2,0.2,0.2,0.2
3,0.3,0.3,0.3
Run Code Online (Sandbox Code Playgroud)
使用 AWK,我需要转换数据,使其看起来像这样;-
Type
1,Fac1,0.1
1,Fac2,0.1
1,Fac3,0.1
2,Fac1,0.2
2,Fac2,0.2
2,Fac3,0.2
3,Fac1,0.3
3,Fac2,0.3
3,Fac3,0.3
Run Code Online (Sandbox Code Playgroud)
换句话说,一种从水平向垂直转变的“枢轴”动作。
所以我试过这个:
awk -F ',' '{for (i=2;i<=NF;i++) { if (i==2) {print $1"," $i } else print $1"," $i}}'
Run Code Online (Sandbox Code Playgroud)
$ cat tst.awk
BEGIN { FS=OFS="," }
NR==1 {
print $1
split($0,tags)
next
}
{
for (i=2; i<=NF; i++) {
print $1, tags[i], $i
}
}
Run Code Online (Sandbox Code Playgroud)
$ awk -f tst.awk file
Type
1,Fac1,0.1
1,Fac2,0.1
1,Fac3,0.1
2,Fac1,0.2
2,Fac2,0.2
2,Fac3,0.2
3,Fac1,0.3
3,Fac2,0.3
3,Fac3,0.3
Run Code Online (Sandbox Code Playgroud)