行列旋转2:行转列
awk程序脚本中的数组无需事先声明初始化,即时即用。
每一行被切割成几份(即几个字段),再将字段索引号放在数组作判断,
不存在则初始化a[i]=$i该数组元素,存在则在原先数组元素的基础上追加段内容, 把整个文件文本遍历完毕后,再按照行列转换思想(行变列,列变行,即原5行3列,现3行5列), 原来的列变成行,则最后用NF循环控制行输出。
每个数组元素代表每一行组成内容(即是原始文件的一整列内容)。
[root@localhost ~]# cat a.txt
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
[root@localhost ~]#
[root@localhost ~]# awk '{for(i=1;i<=NF;i++){if(i in a) a[i]=a[i]" "$i ; else a[i]=$i }} END{for(i=1;i<=NF;i++) print a[i]}' a.txt
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
[root@localhost ~]#