追踪文件中的列过滤

1 投票
3 回答
1273 浏览
提问于 2025-04-16 06:19

我正在对一个从ns-2生成的跟踪文件进行可视化分析,这个文件记录了在模拟过程中发送、接收和丢弃的数据包。

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

我想把第一列的数据分成发送(S)、接收(R)和丢弃(D)三类,然后分别对它们进行求和,以便计算数据包的传送比例。

我对怎么实现这一点毫无头绪?(也许需要一些awk或python的帮助?)

更新:好的,我做到了 -

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

其中 <x> 可以是 srD

3 个回答

0

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这个时候,我们可以去一些技术论坛,比如StackOverflow,去寻找解决方案或者向别人提问。

在这些论坛上,很多人会分享他们的经验和解决方法。你可以看到各种各样的问题和答案,有的可能很复杂,但也有很多简单易懂的解释。

如果你在学习编程,遇到困难,不妨去这些地方看看,可能会找到你需要的帮助。记得在提问时,把你的问题描述清楚,这样别人才能更好地理解你的困惑,给出有效的建议。

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])]
1

试试这个:

awk '{data[$1]+=$2} END{for (d in data) print d,data[d]}' inputfile

输出结果:

D 80.1951
r 80.059
s 160.158
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)

这接近你想要的格式吗?

撰写回答