sed vs perl :)

Na jó, ez megint a saját hülyeségem, de számomra érdekes, mondhatni tanulságos.
Ki akartam szedni egy logból, hogy óránként hány packetet dobott el a packet filter, azonos külső IP címmel (DST=...).
Ez eredetileg így nézett ki (fogalmam sincs, hogy miért csináltam így, általában perl-t használok ilyesmire):

grep -a DROP | sed -E 's/^(... .. ..).*DST=(\S+).*/\1 \2/' | uniq -c

A szerverem egy lassúcska celeron procit használ, azon az egyheti adag feldolgozása kb. 35s volt. Kicseréltem erre:

perl -nle '/^(... .. ..):.*DROP.*DST=(\S+)/ && do { print $1,"\t",$2 }' | uniq -c

Jé... mintha egy picivel gyorsabb lenne: 3s... :D
Csak arra nem tudok rájönni, hogy eredetileg mi okom volt a grep-sed duót választani, mikor a perl eleve "tisztább, szárazabb, biztonságosabb érzés"... Mert a python mellőzése egyértelmű: egysoros kódok összerakása sokkal macerásabb vele. (számomra kb. reménytelen kategória, de lehet, hogy van akinek menne)

Megjegyzések

Népszerű bejegyzések ezen a blogon

squid - X-Forwarded-for

Command line dedup