免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4168 | 回复: 10
打印 上一主题 下一主题

如何使用awk实现数组重排? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-25 14:50 |只看该作者 |倒序浏览
现有文件a.txt

100 A 1 B 1
200 A 1 B 1 C 1
300 A 1 B 2 C 1
400 B 1 C 2 D 1
500 A 1 B 2 C 1 D 1
600 C 2 D 1 E 2

希望的输出结果:
      A  B  C  D  E  
100   1  1  0  0  0
200   1  1  1  0  0
300   1  2  1  0  0
400   0  1  2  1  0
500   1  2  1  1  0
600   0  0  2  1  2

如何才能用awk实现呢,求各位大侠指点。

论坛徽章:
0
2 [报告]
发表于 2011-07-25 15:19 |只看该作者
回复 1# theall
  1. awk '{a[NR]=$1;for (i=2;i<NF;i+=2) {b[$1","$i]=$(i+1);if (!x[$i]++) c[++n]=$i}}END{for (i=1;i<=n;i++) printf "\t"c[i];print "";for (i=1;i<=NR;i++) {printf a[i];for (j=1;j<=n;j++) printf "\t"(a[i]","c[j] in b?b[a[i]","c[j]]:0);print ""}}' a.txt
复制代码

评分

参与人数 1可用积分 +5 收起 理由
where27 + 5 数组已经炉火纯青了。。

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2011-07-25 15:20 |只看该作者
回复 1# theall


    好像没什么规则呀

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
4 [报告]
发表于 2011-07-25 21:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2011-07-25 23:37 |只看该作者
汝真乃神人也

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
6 [报告]
发表于 2011-07-26 00:22 |只看该作者
本帖最后由 yinyuemi 于 2011-07-26 02:09 编辑

回复 1# theall
  1. echo '100 A 1 B 1
  2. 200 A 1 B 1 C 1
  3. 300 A 1 B 2 C 1
  4. 400 B 1 C 2 D 1
  5. 500 A 1 B 2 C 1 D 1
  6. 600 C 2 D 1 E 2' | \
  7. awk '{a[NR]=$1;{for(i=2;i<=NF;i++){c[$i];b[NR" "$(i-1)]=$(++i)}}}END{for(i=0;i<=NR;i++){printf a[i];{for(j=1;j<=asorti(c,d);j++) printf i?(b[i" "d[j]]>0?"\t"b[i" "d[j]]:"\t0"):"\t"d[j]};print ""}}'
  8.         A       B       C       D       E
  9. 100     1       1       0       0       0
  10. 200     1       1       1       0       0
  11. 300     1       2       1       0       0
  12. 400     0       1       2       1       0
  13. 500     1       2       1       1       0
  14. 600     0       0       2       1       2
复制代码

论坛徽章:
0
7 [报告]
发表于 2011-07-26 10:38 |只看该作者
万分感谢,能否简单解释下?

论坛徽章:
0
8 [报告]
发表于 2011-07-26 11:32 |只看该作者
太强了  根本看不懂!

论坛徽章:
0
9 [报告]
发表于 2011-07-26 11:36 |只看该作者
学习。。

论坛徽章:
0
10 [报告]
发表于 2011-07-26 18:08 |只看该作者
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP