免费注册 查看新帖 |

Chinaunix

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

[文本处理] 汇总计算第二列 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-27 19:58 |只看该作者 |倒序浏览
假设一文本为一考生一学期参加的所有考试的成绩:
[aii@localhost gjy]$ cat test.txt
chinese:85
chinese:92
chinese:79
chinese:86
chinese:81
chinese:76
chinese:84
chinese:84
chinese:88
chinese:78
math:75
math:84
math:83
math:79
math:85
math:90
math:94
math:84
math:69
math:80
english:92
english:76
english:83
english:81
english:87
english:83
english:82
english:79
english:79
physics:68
physics:75
physics:69
physics:90
physics:83
physics:83
physics:82
physics:79
physics:69
physics:85
chemistry:80
chemistry:76
chemistry:77
chemistry:83
chemistry:83
chemistry:82
chemistry:90
chemistry:87
chemistry:88
chemistry:90
politics:93
politics:89
politics:90
politics:92
politics:99
politics:92
politics:89
politics:90
politics:91
politics:91
怎样写脚本或命令行算出该考生各门科目在这个学期的总成绩?
返回:
[aii@localhost gjy]$ cat test.txt
chinese:833
math:823
english:825
physics:783
chemistry:836
politics:916




english:83

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
2 [报告]
发表于 2016-04-27 20:00 |只看该作者
  1. awk -F: '{a[$1]+=$2}END{for(i in a)print i":"a[i]}' file
复制代码

论坛徽章:
0
3 [报告]
发表于 2016-04-27 20:14 |只看该作者
非常感谢。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
4 [报告]
发表于 2016-04-27 22:27 |只看该作者
回复 1# oldknew
提供一种方法
  1. [root@study study]# cat file1
  2. chinese:85
  3. chinese:92
  4. chinese:79
  5. chinese:86
  6. chinese:81
  7. chinese:76
  8. chinese:84
  9. chinese:84
  10. chinese:88
  11. chinese:78
  12. math:75
  13. math:84
  14. math:83
  15. math:79
  16. math:85
  17. math:90
  18. math:94
  19. math:84
  20. math:69
  21. math:80
  22. english:92
  23. english:76
  24. english:83
  25. english:81
  26. english:87
  27. english:83
  28. english:82
  29. english:79
  30. english:79
  31. physics:68
  32. physics:75
  33. physics:69
  34. physics:90
  35. physics:83
  36. physics:83
  37. physics:82
  38. physics:79
  39. physics:69
  40. physics:85
  41. chemistry:80
  42. chemistry:76
  43. chemistry:77
  44. chemistry:83
  45. chemistry:83
  46. chemistry:82
  47. chemistry:90
  48. chemistry:87
  49. chemistry:88
  50. chemistry:90
  51. politics:93
  52. politics:89
  53. politics:90
  54. politics:92
  55. politics:99
  56. politics:92
  57. politics:89
  58. politics:90
  59. politics:91
  60. politics:91
  61. [root@study study]# cat file1 | awk -F: '{print $1}' | uniq > file2
  62. [root@study study]# cat file2
  63. chinese
  64. math
  65. english
  66. physics
  67. chemistry
  68. politics
  69. [root@study study]#
  70. [root@study study]#
  71. [root@study study]# sh  script1.sh     
  72. 833
  73. 823
  74. 742
  75. 783
  76. 836
  77. 916
  78. [root@study study]# cat script1.sh
  79. #!/bin/sh
  80. for i in `cat file2`
  81. do
  82.   awk -F: '(var==$1){total+=$2;}END{print total}' var=$i file1
  83. done
复制代码

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
5 [报告]
发表于 2016-04-28 00:29 |只看该作者
  1. awk -F: '$1!=pre{
  2.     n+=1
  3. }
  4. {
  5.     a[n][$1]+=$2
  6. }
  7. {
  8.     pre=$1
  9. }
  10. END{
  11.     for(i=1;i<=n;i++){
  12.         for(j in a[i]){
  13.             print j":"a[i][j]
  14.         }
  15.     }
  16. }' file #gawk 4.0+
复制代码

求职 : 技术支持/维
论坛徽章:
0
6 [报告]
发表于 2016-04-28 08:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
7 [报告]
发表于 2016-04-28 09:30 |只看该作者
本帖最后由 mswsg 于 2016-04-28 09:34 编辑
  1. with open('1.txt', 'r') as f:
  2.     alist = []
  3.     d = {}
  4.     lines = f.readlines()
  5.     for line in lines:
  6.         line = line.strip().split(':')
  7.         alist.append(line)

  8.     for i in alist:
  9.         try:
  10.             d[i[0]] += int(i[1])
  11.         except KeyError:
  12.             d[i[0]] = int(i[1])
  13.     for course, score in d.items():
  14.         print course, score
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
8 [报告]
发表于 2016-04-28 09:31 |只看该作者
english 的和求错了?
chinese 833
english 742
politics 916
chemistry 836
physics 783
math 823
回复 1# oldknew


   

论坛徽章:
1
2015亚冠之萨济拖拉机
日期:2015-09-04 10:29:22
9 [报告]
发表于 2016-04-28 09:41 |只看该作者
awk -F":" '{a[$1]+=$2}END{for(i in a){print i":"a[i]}}'  filename

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
10 [报告]
发表于 2016-04-28 09:44 |只看该作者
awk 'BEGIN{FS=OFS=":"}{a[$1]+=$2}END{for(i in a)print i,a[i]}' file
english:742
physics:783
chinese:833
politics:916
chemistry:836
math:823
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP