刚才某个运维交流群中有个同学提出了以下需求:
abc 124
cba 234
abc 356
cba 244
ddd 234
我想计算这样一个文件里面第一列相同名称的 第二列和,有什么简单方法?结果要类似下面的
abc 480
cba 378
之后有位shell的大牛很快提出了解决方案:
awk ‘{a[$1]+=$2}END {for (i in a)print i,a[i]}‘ test.txtsysadmin@sysadmin-VirtualBox:~$ cat test.txt
abc 124
cba 234
abc 356
cba 244
cba 23232
abc 2323
ddd 234
sysadmin@sysadmin-VirtualBox:~$ awk ‘{a[$1]+=$2}END {for (i in a)print i,a[i]}‘ test.txt
abc 2803
cba 23710
ddd 234后来仔细想了想,这个需求可以用python的字典来实现,花了小二十分钟才写出来哈哈。。。
#!/usr/bin/python
dict = {}
spath1 = ‘/home/sysadmin/test.txt‘
f1 = open(spath1,‘r‘)
for line in f1.readlines():
a = line.split()[0]
b = line.split()[1]
if dict.has_key(a):
c = int(dict[a]) + int(b)
dict[a] = c
else:
dict[a] = b
for key in dict:
print key,dict[key]本文出自 “葡萄呀 Enjoy your life” 博客,请务必保留此出处http://bxuan.blog.51cto.com/376592/1584052
原文:http://bxuan.blog.51cto.com/376592/1584052