Reputation: 61
I want to use awk to transpose a file over a group field. Tks
I have a file like this.
id Name Value
1 B1 0.1
1 B2 0.3
1 B3 0.4
2 B1 0.2
2 B2 0.09
2 B3 0.10
I want a file like this:
B1 B2 B3
1 0.1 0.3 0.4
2 0.2 0.09 0.10
Upvotes: 0
Views: 140
Reputation: 203597
$ cat tst.awk
BEGIN { OFS="\t" }
NR==1 { next }
(prev != "") && ($1 != prev) {
if (++nr == 1) {
print hdr
rec = prev rec
}
print rec
hdr = ""
rec = $1
}
{
hdr = hdr OFS $2
rec = rec OFS $3
prev = $1
}
END { print rec }
$ awk -f tst.awk file
B1 B2 B3
1 0.1 0.3 0.4
2 0.2 0.09 0.10
Upvotes: 1