我正在对从ns-2生成的跟踪文件进行可视化分析,该跟踪文件描绘了在模拟的不同时间发送/接收/丢弃的数据包
这是一个示例跟踪输出 - http://pastebin.com/aPm3EFax
我希望在将它分别分组到S / D / R之后过滤掉它,这样我就可以将它总结为单独来查找数据包传递分数。
我对如何完成这项工作毫无头绪? (也许有些awk / python有帮助?)
更新:好的,我这样做了 -
cut -d' ' -f1 wireless-out.tr | grep <x> | wc -l
其中<x>
为s
或r
或D
答案 0 :(得分:1)
尝试一下:
awk '{data[$1]+=$2} END{for (d in data) print d,data[d]}' inputfile
输出:
D 80.1951
r 80.059
s 160.158
答案 1 :(得分:0)
import collections
result=collections.defaultdict(list)
with open('data','r') as f:
for line in f:
line=line.split()
key=line[0]
value=float(line[1])
result[key].append(value)
for key,values in result.iteritems():
print(key,sum(values))
的产率:
('s', 160.15817391900003)
('r', 80.058963809000005)
('D', 80.195127232999994)
这是否接近你想要的形式?
答案 2 :(得分:0)
import csv
import itertools
data = csv.reader(open('aPm3EFax.txt', 'rb'), delimiter=' ')
result = [(i, sum(float(k[1]) for k in g))
for i, g in itertools.groupby(sorted(list(data)), key=lambda x: x[0])]