borykam się z pewnym problemem i nie mogę sobie z nim poradzić, stąd moja prośba o pomoc. Potrzebuję wyciągnąć pojedyncze pole (o różnej wartości) z linii tekstu. Linią jest dowolna reguła dla programu Snort, która wygląda np. tak jak poniżej:
alert udp $HOME_NET any -> any 53 (msg:"BLACKLIST DNS request for known malware domain www.goodfriends.or.kr"; classtype:trojan-activity; sid:18091; rev:1;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 10202:10203 (msg:"EXPLOIT Computer Associates license PUTOLF overflow attempt"; depth:6; offset:3; sid:3517; rev:7;)
a ja chcę wyciągnąć z każdej reguły tylko część 'sid:numer; rev:numer;', a najlepiej same numery bez poprzedzających je opisów.
Reguły mogą mieć różną ilość pól, ale numery sid i rev zawsze znajdują się na końcu reguły, tak jak w powyższych dwóch regułach.
Próbowałem to zrobić poleceniem:
echo $line | grep -EH '(sid:[0-9]{1,};)\\s*(rev:[0-9]{1,};)'
ale bezskutecznie.