跟踪文件上的列过滤

时间:2010-10-30 12:00:19

标签: python awk

我正在对从ns-2生成的跟踪文件进行可视化分析,该跟踪文件描绘了在模拟的不同时间发送/接收/丢弃的数据包

这是一个示例跟踪输出 - http://pastebin.com/aPm3EFax

我希望在将它分别分组到S / D / R之后过滤掉它,这样我就可以将它总结为单独来查找数据包传递分数。

我对如何完成这项工作毫无头绪? (也许有些awk / python有帮助?)

更新:好的,我这样做了 -

cut -d' ' -f1 wireless-out.tr | grep <x> | wc -l

其中<x>srD

3 个答案:

答案 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])]