我有以下格式的 Squid 日志文件:
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 格式的时间。
date命令可以转换为unix格式:
date -d "31 Jul 2014 12:51:57 +0400" '+%s'
1406796717
但我无法编写sed
更改格式的命令。请帮帮我。
答案1
您可以使用以下 perl 命令替换现有日志中的所有日期:
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