AWK:使用第一列作为参考打印矩阵的列

时间:2014-09-10 06:38:38

标签: awk

我想在矩阵中读取第一个列,然后使用第一个列作为参考打印此矩阵的列。例如:

mat.txt
2 10 6 12 3
4 11 1 22 6
5 15 3 18 9

使用第一列作为参考,我想得到第2,4和5列,并且还将第一列的值放在开头。

2 10 12 3
4 11 22 6
5 15 18 9

我试试这个,但效果不好:

awk 'FNR==NR{c++;cols[c]=$1;end}
            {for(i=1;i<=c;i++) printf("%s%s",$(cols[i]+1),i<c ? OFS : "\n")}' mat.txt mat.txt

1 个答案:

答案 0 :(得分:1)

这可能会:

awk 'FNR==NR {a[NR]=$1;next} {printf "%s ",a[FNR];for (i in a) printf "%s ",$(a[i]);print ""}' mat.txt{,}
2 10 12 3
4 11 22 6
5 15 18 9

{,}使文件被使用两次。