我想使用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"
答案 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