如何从apache访问日志中分离出日期和时间字段?

时间:2015-10-06 09:46:02

标签: linux apache shell unix

XX.XX.XX.XXX - - [22/Sep/2015:00:59:54 +0000] "POST /zabbix/jsrpc.php?output=json-rpc HTTP/1.1" 200 66 "http://XXX.XX.XX.XXX/zabbix/dashboard.php?sid=ca62d327b6afb561" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0"

这是我的apache访问日志。 我想解析这些日志,只想要提交日期(不是时间戳)。 那么如何才能得到22/Sep/2015这个输出?

1 个答案:

答案 0 :(得分:1)

使用grep -oP(PCRE):

grep -oP '(?<=\[)\d+/[A-Z][a-z]+/\d+' access.log
22/Sep/2015

如果您的grep不支持-P,请使用sed

sed -r 's~.*\[([0-9]+/[A-Z][a-z]+/[0-9]+).*~\1~' access.log
22/Sep/2015

或者在OSX上:

sed -E 's~.*\[([0-9]+/[A-Z][a-z]+/[0-9]+).*~\1~' access.log
22/Sep/2015