免费注册 查看新帖 |

Chinaunix

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

awk处理数据,赶快来挑战! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-16 02:13 |只看该作者 |倒序浏览
有一文本文件内容如下:
  1. gggg 15 110 A
  2. gggg 16 110 A
  3. gggg 17 110 A
  4. gggg 18 110 A
  5. gggg 19 110 A
  6. gggg 20 110 A
  7. gggg 1001 110 A
  8. hhh 1 110 A
  9. hhh 4 110 A
  10. hhh 6 110 A
  11. hhh 7 110 A
  12. hhh 8 110 A
  13. hhh 9 110 A
  14. hhh 10 110 A
  15. hhh 11 110 A
  16. hhh 12 110 A
  17. hhh 13 110 A
  18. hhh 14 110 A
  19. hhh 15 110 A
  20. hhh 16 110 A
  21. hhh 17 110 A
  22. hhh 18 110 A
  23. hhh 19 110 A
  24. hhh 20 110 A
  25. hhh 21 110 A
  26. hhh 21 110 B
  27. hhh 1002 110 A
  28. aaaa 1 110 A
  29. aaaa 2 110 A
  30. aaaa 3 110 A
  31. aaaa 4 110 A
  32. cccc 58 110 A
  33. cccc 59 110 A
  34. cccc 60 110 A
  35. cccc 61 110 A
  36. cccc 62 110 A
  37. cccc 63 110 A
  38. cccc 66 110 A
  39. cccc 67 110 A
  40. cccc 68 110 A
  41. cccc 69 110 A
  42. cccc 70 110 A
  43. cccc 71 110 A
  44. cccc 72 110 A
  45. cccc 73 110 A
  46. cccc 74 110 A
  47. cccc 75 110 A
  48. cccc 76 110 A
  49. cccc 77 110 A
  50. cccc 78 110 A
  51. cccc 79 110 A
  52. cccc 80 110 A
  53. cccc 81 110 A
  54. cccc 81 110 B
  55. cccc 81 110 C
  56. cccc 82 110 C
  57. cccc 82 110 B
  58. cccc 82 110 A
  59. cccc 83 110 A
  60. cccc 83 110 B
  61. cccc 83 110 C
  62. cccc 84 110 A
  63. cccc 84 110 B
  64. cccc 84 110 C
  65. cccc 85 110 A
  66. cccc 85 110 B
  67. cccc 85 110 C
  68. cccc 1001 110 A
  69. cccc 1001 110 B
  70. cccc 1002 110 A
  71. cccc 1003 110 A
  72. cccc 1003 110 B
  73. cccc 1004 110 A
  74. cccc 1004 110 B
  75. cccc 1005 110 A
  76. cccc 1006 110 A
  77. cccc 1007 110 A
  78. cccc 1008 110 A
  79. bbbb 1001 110 A
  80. dddd 1 110 A
  81. eeee 7 110 A
  82. eeee 8 110 A
  83. eeee 9 110 A
  84. eeee 10 110 A
  85. eeee 11 110 A
  86. eeee 12 110 A
  87. eeee 13 110 A
  88. eeee 14 110 A
  89. eeee 1001 110 A
  90. dd 1 110 A
  91. dd 1 110 B
  92. dddd 1 110 A
  93. ffff 1 110 A
  94. ffff 2 110 A
复制代码
现在要做如下统计:将第一列相同的第二列数字取出来,如果有连续的数字,不要全部写出来,只要用“-”做个范围即可,其他不连续的照写!最终获得如下结果:
  1. hhh:1 4 6-21 1002
  2. eeee:7-14 1001
  3. bbbb:1001
  4. ffff:1-2
  5. dd:1
  6. cccc:58-63 66-85 1001-1008
  7. gggg:15-20 1001
  8. dddd:1
  9. aaaa:1-4
复制代码
赶快来挑战吧!

论坛徽章:
0
2 [报告]
发表于 2011-11-16 02:20 |只看该作者
先顶!

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2011-11-16 07:18 |只看该作者
  1. sort -k1,1 -k2,2n  file |awk '!b[$1" "$2]++{if($1 in a||a[$1]==1){if(t+1!=$2){printf (m==t?"":"-"t)" "$2;m=$2}}else{printf (m==t?"":"-"t)(NR==1?"":"\n")$1": "$2;m=$2;};t=$2;a[$1]++}END{print ""}'
  2. aaaa: 1-4
  3. bbbb: 1001
  4. cccc: 58-63 66-85 1001-1008
  5. dd: 1
  6. dddd: 1
  7. eeee: 7-14 1001
  8. ffff: 1-2
  9. gggg: 15-20 1001
  10. hhh: 1 4 6-21 1002
复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2011-11-16 09:41 |只看该作者
挑战两个字大可不必写吧,看到第三列没有用处,那么我想你应该是实际情况中遇到的,然后自己不会写吧

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2011-11-16 10:13 |只看该作者
本帖最后由 jason680 于 2011-11-16 10:16 编辑

回复 1# lionfun

没感到有挑战难度....
挑战难度以满分十分的话...难度好像只有三分...
$ awk '{if(a[$1]==""a[$1]=$2;else{n=$2-1;if(match(a[$1],$2))next;if(sub("-"n,"-"$2,a[$1]))next;if(sub(n,n"-"$2,a[$1]))next;a[$1]=a[$1]" "$2}}END{N=asorti(a,b);for(n=0;n++<N print b[n]": "a[b[n]]}' key.txt
aaaa: 1-4
bbbb: 1001
cccc: 58-63 66-85 1001-1008
dd: 1
dddd: 1
eeee: 7-14 1001
ffff: 1-2
gggg: 15-20 1001
hhh: 1 4 6-21 1002

论坛徽章:
0
6 [报告]
发表于 2011-11-16 11:38 |只看该作者
回复 4# cjaizss


    谢谢指教,发个帖子而已,我承认我技术差!

论坛徽章:
0
7 [报告]
发表于 2011-11-16 11:53 |只看该作者
回复 5# jason680


    谢谢指教,学习了!

论坛徽章:
0
8 [报告]
发表于 2011-11-16 12:22 |只看该作者
回复 3# yinyuemi


    谢谢!

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

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
10 [报告]
发表于 2011-11-16 18:19 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP