我想在矩阵中读取第一个列,然后使用第一个列作为参考打印此矩阵的列。例如:
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
答案 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
{,}
使文件被使用两次。