追踪文件中的列过滤
我正在对一个从ns-2生成的跟踪文件进行可视化分析,这个文件记录了在模拟过程中发送、接收和丢弃的数据包。
这里有一个示例跟踪输出 - http://pastebin.com/aPm3EFax
我想把第一列的数据分成发送(S)、接收(R)和丢弃(D)三类,然后分别对它们进行求和,以便计算数据包的传送比例。
我对怎么实现这一点毫无头绪?(也许需要一些awk或python的帮助?)
更新:好的,我做到了 -
cut -d' ' -f1 wireless-out.tr | grep <x> | wc -l
其中 <x>
可以是 s
、r
或 D
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)
这接近你想要的格式吗?