awk 处理文本:行转列,列转行

来源:互联网 发布:key-value数据库原理 编辑:程序博客网 时间:2024/05/17 22:14


[root@centos ~]# cat f1 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 5
awk '{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(j=1;j<=NF;j++)for(k=1;k<=NR;k++)printf k==NR?a[k,j] RS:a[k,j] FS}' f1 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 45 5 5 5 5


或者 以下一句更简单:

awk '{for(i=0;++i<=NF;)a[i]=a[i]?a[i] FS $i:$i}END{for(i=0;i++<NF;)print a[i]}'