Я анализирую файл журнала, пытаясь вытащить строки, где фраза «failures =» является уникальной ненулевой цифрой.
Первая часть моего perl one liner вытянет все строкигде «сбои» больше нуля.Но эта часть файла журнала повторяется до тех пор, пока не произойдет новый сбой, т. Е. После первого сбоя записи журнала будут «failures = 1», до второй ошибки, после чего будет прочитано «failures = 2».
То, что я хотел бы сделать, это потянуть только первую строку, где это значение изменяется, и я подумал, что у меня это с этим:
cat -n Logstats.out | perl -nle 'print "Line No. $1: failures=$2; eventDelta=$3; tracking_id=$4" if /\s(\d+)\t.*failures=(\d+).*eventDelta=(.\d+).*tracking_id="(\d+)"/ && $2 > 0' | perl -ne 'print unless $a{/failures=\d+/}++'
Однако, это тянет только первую ненулевую строку «ошибка»и ничего больше.Что мне нужно изменить, чтобы он вытягивал все уникальные значения для «сбоев»?
заранее спасибо!
Обновление: количество текста в каждой строке до «tracking_id»больше текста, чем я могу опубликовать.Извините!
2011-09-06 14:14:18 [INFO] [logStats]: имя = имя-идентификатора = d6e6f4f0-4c0d-93b6-7a71-8e3100000030 successses = 1 сбоев = 0 пропущено =0 eventDelta = 41 оригинал = 188 смоделировано = 229 totalDelta = 41 AverageDelta = 41 мин = 0 max = 41 среднееOriginalDuration = 188 СреднееSimulatedDuriation = 229 (txid = b3036eca-6288-48ef-166f-5ae200000646 дата = 2011-09-02 08:00: 00 type = XML xml =