Исправление PERL-запроса для парсинга данных из tcpdump

коллеги. Есть запрос:

tcpdump -e -tt -nn

введите сюда описание изображения

С помощью него мы получаем точное время с долями секунды (6 знаков после запятой). Далее мы форматируем запрос PERLом, после чего доли секунды исчезают, остается только целая часть.

tcpdump -e -tt -nn | perl -pe 's/([0-9]*)\..*length\s([0-9]*):\s((?:\d+\.){3}\d+)\.(\d+)\s>\s((?:\d+\.){3}\d+)\.(\d+).*/$1 $2 $3 $4 $5 $6/' > traffic.log

введите сюда описание изображения

Как изменить запрос, чтобы остались доли секунд?


Ответы (2 шт):

Автор решения: Fat-Zer

Как-то так можно:

tcpdump -e -tt -nn | \
  perl -pe 's/(\d*\.\d*)\s.*length\s([0-9]*):\s((?:\d+\.){3}\d+)\.(\d+)\s>\s((?:\d+\.){3}\d+)\.(\d+).*/$1 $2 $3 $4 $5 $6/'
→ Ссылка
Автор решения: Sergey

Попробуйте заменить первую группу

([0-9]*)

на

([0-9]{10}\.[0-9]{6})

Тогда первая группа будет содержать полную запись времени

→ Ссылка