首页 > 代码库 > shell脚本,awk实现行列转换
shell脚本,awk实现行列转换
[root@localhost study]# cat file张三 语文 81张三 数学 81李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90怎么实现为下面的排序???81 81 76 90 81 100 90语文 数学 语文 数学 语文 数学 英语张三 张三 李四 李四 王五 王五 王五以下是思路分析:张三 语文 81张三 数学 81李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90for(i=1;i<=NF;i++)a[NR,i]=$i[NR i]=$ia[1,1]=$i=$1=1 a[1,2]=$i=$1=2 a[1,3]=$i=$1=3 a[2,1]=$i=$1=1 a[2,2]=$i=$1=2 a[2.3]=$i=$1=3 a[3,1]=$i=$1=1 a[3,2]=$i=$1=2 a[3,3]=$i=$1=3 a[4,1]=$i=$1=1 a[4,2]=$i=$1=2 a[4.3]=$i=$1=3 a[5,1]=$i=$1=1 a[5,2]=$i=$1=2 a[5,3]=$i=$1=3 a[6,1]=$i=$1=1 a[6,2]=$i=$1=2 a[6,3]=$i=$1=3 a[7,1]=$i=$1=1 a[7,2]=$i=$1=2 a[7,3]=$i=$1=3 这些数组取值和上面一一对应想要实现下面排序81 81 76 90 81 100 90语文 数学 语文 数学 语文 数学 英语张三 张三 李四 李四 王五 王五 王五那么他们对应的数组变量是:a[1,3] a[2.3] a[3,3] a[4.3] a[5,3] a[6,3] a[7.3]a[1,2] a[2,2] a[3,2] a[4,2] a[5,2] a[6,2] a[7,2]a[1,1] a[2,1] a[3,1] a[4,1] a[5,1] a[6,1] a[7,1]可以使用2个for循环控制好对应的数组下表,即可取出对应的值for(i=NF;i>=1;i--) 输出 i= 3 2 1 (3>i>1)for(j=1;j<=NR;j++) 输出 j= 1 2 3 4 5 6 7 (1<j<7)当i=3时j=1,2,3,4,5,6,7a[j,i]输出 a[1,3] a[2,3] a[3,3] a[4,3] a[5,3] a[6,3] a[7,3]当i=2时j=1,2,3,4,5,6,7a[j,i]输出 a[1,2] a[2,2] a[3,2] a[4,2] a[5,2] a[6,2] a[7,2]当i=2时j=1,2,3,4,5,6,7a[j,i]输出 a[1,1] a[2,1] a[3,1] a[4,1] a[5,1] a[6,1] a[7,1][root@localhost study]# cat file|awk ‘{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(i=NF;i>=1;i--){for(j=1;j<=NR;j++){printf a[j,i]" "}print xxoo}}‘81 81 76 90 81 100 90 语文 数学 语文 数学 语文 数学 英语 张三 张三 李四 李四 王五 王五 王五
shell脚本,awk实现行列转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。