用于Web服务器日志文件的grep命令,用于提取http响应代码

时间:2014-11-22 08:08:34

标签: bash grep

我想使用bash从中提取http状态代码。请建议使用grep命令。

devel.example.com:80 199.4.27.122 - - [10/Oct/2012:04:45:09 -0400] "GET /wp-content/themes/cordobo-green-park-2/img/logo-cgp2.png HTTP/1.1" 200 1863 "http://devel.example.com/category/bit-lug/" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.92 Safari/537.4"

3 个答案:

答案 0 :(得分:1)

假设这些行位于名为requests.log的文件中,并且所有行都与您所描述的一样,您可以使用此命令:

sed -E 's|.*HTTP/1.1" ([0-9]+).*|\1|' requests.log

答案 1 :(得分:0)

这是一种方法:

awk -F "HTTP/1.?" '{split($2,a," ");print a[2]}' file
200

它将获得HTTP/1.1

之后的第一个数字

答案 2 :(得分:0)

我可能会做类似

的事情
$ cat input
devel.example.com:80 199.4.27.122 - - [10/Oct/2012:04:45:09 -0400] "GET
/wp-content/themes/cordobo-green-park-2/img/logo-cgp2.png HTTP/1.1" 200
1863 "http://devel.example.com/category/bit-lug/" "Mozilla/5.0 (Windows
NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.92
Safari/537.4"
$ grep -oP '(?<=HTTP\/1\.1"\s)\d+' input
200
相关问题