更改日志文件中的时间格式

更改日志文件中的时间格式

我有以下格式的 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

相关内容