Фильтрация столбцов в файле трассировки - PullRequest
1 голос
/ 30 октября 2010

Я выполняю визуализационный анализ файла трассировки, который я генерирую из ns-2, который отслеживает пакеты, отправленные / полученные / отброшенные в различные моменты моделирования

вот пример вывода трассировки - http://pastebin.com/aPm3EFax

Я хочу отфильтровать столбец1 после группировки его по отдельности в S / D / R, чтобы я мог суммировать его по отдельности, чтобы найти долю доставки пакетов.

Я не знаю, какчтобы сделать это?(может быть, какая-нибудь помощь по awk / python?)

ОБНОВЛЕНИЕ: хорошо, я сделал это -

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

, где <x> это либо s, либо r, либо D

Ответы [ 3 ]

1 голос
/ 30 октября 2010

Попробуйте:

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

Выход:

D 80.1951
r 80.059
s 160.158
0 голосов
/ 30 октября 2010
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])]
0 голосов
/ 30 октября 2010
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)

Это близко к форме, которую вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...