我有一个以下格式的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命令。请帮帮我。
答案 0 :(得分:0)
比后处理更好的是,日志文件将配置squid config中日志中使用的时间格式,以便生成正确的日期/时间格式。
答案 1 :(得分:0)
例如,你可以使用它:
$ date -d"$(sed -r 's#^([0-9]{2})/(\w*)/([0-9]{4}):([0-9:]{8}).*#\1 \2 \3 \4#' file)"
Thu Jul 31 13:44:52 CEST 2014
利用这个sed:
$ sed -r 's#^([0-9]{2})/(\w*)/([0-9]{4}):([0-9:]{8}).*#\1 \2 \3 \4#' file
31 Jul 2014 13:44:52
它从包含此数据的行的开头捕获文本:XX/word/YYYY:ZZZ
,是ZZZ
8位数字和半冒号的组合。
或更准确:
sed -r 's#^([0-9]{2})/(\w*)/([0-9]{4}):([0-9]{2}:[0-9]{2}:[0-9]{2}).*#\1 \2 \3 \4#' file