grep命令只匹配访问日志的请求url

grep命令只匹配访问日志的请求url,grep,Grep,我需要找到所有访问的网址有像配置,tmp,备份或转储关键字 grep '/config/\|/tmp/\|/backup/\|/dump/' access.log 当我grep访问日志时,我得到了如下不需要的日志 106.221.160.250---[11/Apr/2014:12:07:13-0400]获取url.com/perfect HTTP/1.120043file:///something/tmp/579928.html HTC_Smart_F3188 Mozilla/5.0 like

我需要找到所有访问的网址有像配置,tmp,备份或转储关键字

grep '/config/\|/tmp/\|/backup/\|/dump/' access.log
当我grep访问日志时,我得到了如下不需要的日志

106.221.160.250---[11/Apr/2014:12:07:13-0400]获取url.com/perfect HTTP/1.120043file:///something/tmp/579928.html HTC_Smart_F3188 Mozilla/5.0 like Gecko Obigo/Q7 0 20675

它是不需要的,比如geturl.com/perfecthttp/1.120043file:///something/tmp/579928.html 它不包含所需的关键字

我应该如何更改grep命令?

尝试以下操作:

grep'tmp\| config\| backup\| dump'accessl.log

您的输入数据确实包含您要查找的关键字之一。注:

grep '/config/\|/tmp/\|/backup/\|/dump/' access.log
                ^^^^^
以及:

但是,如果有人想惹你,他们仍然可以将/dump/放入他们的用户代理字符串中。如果您真正想要的是匹配GET路径的第一部分,那么您可以准确地查找它,而不是在整行中匹配关键字。例如:

egrep 'GET /(config|tmp|backup|dump)/' access.log
阅读起来也简单得多。我使用了egrep,这样我们就可以使用ERE而不是BRE,以避免丑陋的反斜杠。请注意,如果有人使用虚假数据加载其用户代理,这仍然可能捕获误报,因此您可以使用awk更直接地解析日志文件以控制字段位置:

awk '$6~/GET/ && $7 ~ /^\/(config|tmp|backup|dump)\//' access.log

关键词应该在哪里?它应该在get请求中吗?最好像:grep-color'..'访问那样运行。log@stmfunk是的,在get…@sat我更喜欢只获得相关的结果。@sat我正在寻找解决方案,如何只对get部分进行grep,而不对引用部分进行grep
awk '$6~/GET/ && $7 ~ /^\/(config|tmp|backup|dump)\//' access.log