【发布时间】:2019-12-06 17:33:24
【问题描述】:
- 例如我有这个字符串:
10.1.2.194 (197.84.211.148) - - [08/Oct/2015:09:01:44 +0000] "GET /merlin-web-za/web/images/refinements/loader.gif HTTP/1.1" 200 4178 0 1868 "http://www.autotrader.co.za/makemodel/make/chevrolet/model/aveo/caryearrangeszar/2012/search?sort=PriceAsc&locationName=Cape%20Town&latitude=-33.92584&longitude=18.42322&county=Western%20Cape" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" "ajp://10.1.4.66:8009"
我需要修改:
08/Oct/2015:09:01:44 GET /merlin-web-za/web/images/refinements/loader
我如何使用 awk 或 egrep 来做到这一点? - 我尝试了下面的命令,但是第一个命令的结果显示了包含两个跟随模式的完整字符串
awk ' /08/Oct/2015:09:[0-9]{2}:[0-9]{1,2}/ && /GET (/[a-z0-9-]{1,}){1,3}/'
和
cat file | egrep -o "08/Oct/2015:09:[0-9]{2}:[0-9]{1,}.* GET (/[a-z0-9-]{1,}){1,}"
填补了上述模式之间的空白,结果我可以看到:
08/Oct/2015:09:01:44 +0000] "GET /merlin-web-za/web/images/refinements/loader
这不是我想要得到的
【问题讨论】:
-
试试
awk '{a=$5" "$7" "$8; gsub(/[]["]|\.[^.]*$/, "", a); print a}' -
看来你的预期输出需要修改,如果你真的想获得
08/Oct/2015:09:01:44 GET /merlin-web-za/web/images/refinements/loader.gif,而不是08/Oct/2015:09:01:44 GET /merlin-web-za/web/images/refinements/loader,请检查并告知