刚才某个运维交流群中有个同学提出了以下需求:
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.txt
[email protected]:~$ cat test.txt abc 124 cba 234 abc 356 cba 244 cba 23232 abc 2323 ddd 234 [email protected]:~$ awk ‘{a[$1]+=$2}END {for (i in a)print i,a[i]}‘ test.txt abc 2803 cba 23710 ddd 234
本人的awk实在不怎么会用,所以真心佩服这位大牛
后来仔细想了想,这个需求可以用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]
不过俗话说得好:不积跬步无以至千里嘛
时间: 2024-08-03 18:34:30