У меня есть файл журнала сквида в, следуют за форматом:
31/Jul/2014:13:44:52 +0400.701 0 172.16.204.59 TCP_DENIED/407 5232 GET http://vec01.maps.yandex.net/tiles? - NONE/- text/html
но зарегистрируйте время потребности анализатора в формате Unix.
команда даты может преобразовать в формат Unix:
date -d "31 Jul 2014 12:51:57 +0400" '+%s'
1406796717
но я не могу сочинить sed
команда для формата изменения.Пожалуйста, помогите мне.
Можно использовать следующую команду жемчуга для замены всех дат в существующих журналах:
cat my_squid.log | perl -ne '/(^.*? \+.*?)\..*?\s/; $a = $b = $1;$a= "\Q$a"; $b=~s/\// /g; $b=~s/(\d{4}):/$1 /; $b=`date --date=\"$b\" +%s`; chomp($b); s/$a/${b}/; print'
Вывод теперь:
1406799892.701 0 172.16.204.59 TCP_DENIED/407 5232 GET http://vec01.maps.yandex.net/tiles? - NONE/- text/html