免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123456
最近访问板块 发新帖
楼主: stupid_lee
打印 上一主题 下一主题

[文本处理] 笔试一道AWK文本处理题 [复制链接]

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
51 [报告]
发表于 2014-11-11 17:50 |只看该作者
本帖最后由 wiliiwin 于 2014-11-11 18:16 编辑

python来一发
  1. #!/usr/bin/python
  2. def getConfig():
  3.     f = open("29.txt","r")
  4.     dic = {}
  5.     key = ()
  6.     for line in f:
  7.         line = line.strip()
  8.         line = line.split()
  9.         if int(line[1])<30 or int(line[1])>40:
  10.            key = (line[0],line[1])
  11.            if key in dic:
  12.                dic[key]= dic[key]+int(line[2])
  13.            else:
  14.                dic[key] = int(line[2])
  15.     for keys in dic.keys():
  16.           print keys[0],keys[1],dic[keys]

  17. if __name__ == '__main__':
  18.     getConfig()
复制代码
  1. # 3.py
  2. 456789 45 4532
  3. 123456 23 1000
  4. 345678 21 4679
复制代码

论坛徽章:
0
52 [报告]
发表于 2014-11-12 22:56 |只看该作者
这道题为什么这么火, 练习下。
  1. #!/usr/bin/env python
  2. #
  3. #python 2.7
  4. from fileinput import input
  5. d = {}
  6. for l in input('tmp'):
  7.         n = [ int(x) for x in l.split() ]
  8.         if n[1] < 30 or n[1] > 40:
  9.                 if n[0] in d.keys():
  10.                         d[n[0]][1] += n[2]
  11.                 else:
  12.                         d[n[0]] = n[1:]
  13. for k,v in d.items():
  14.         print '{}\t{}\t{}'.format(k,v[0],v[1])
复制代码
  1. root@ubuntu:/tmp# python t.py
  2. 123456        23        1000
  3. 456789        45        4532
  4. 345678        21        4679
复制代码

论坛徽章:
0
53 [报告]
发表于 2014-11-14 09:43 |只看该作者
$ awk '{if($2<30||$2>40) a[$2]++;}END{for (i in a) print $1,i,a[i]}' urfile3
345678 21 2
345678 23 1
345678 45 1

论坛徽章:
0
54 [报告]
发表于 2014-11-14 09:45 |只看该作者
awk '{if($2<30||$2>40) a[$2]+=$3;}END{for (i in a) print $1,i,a[i]}' urfile3
345678 21 4679
345678 23 1000
345678 45 4532

论坛徽章:
0
55 [报告]
发表于 2014-11-14 09:45 |只看该作者
awk '{if($2<30||$2>40) a[$2]+=$3;}END{for (i in a) print $1,i,a[i]}' urfile3
345678 21 4679
345678 23 1000
345678 45 4532

论坛徽章:
0
56 [报告]
发表于 2014-11-14 09:47 |只看该作者
$ awk '{if($2<30||$2>40) a[$1]+=$3;}END{for (i in a) print $1,i,a[i]}' urfile3
345678 123456 1000
345678 345678 4679
345678 456789 4532
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP