我正在尝试使用Apache2 access.log中的域grep特定行。在我的access.log中,我拥有所有虚拟主机和不同的域。
猫/无功/日志/ access.log的:
www.something-else-domain.si:80 193.77.xxx. xxx - - [06/Nov/2013:12:21:45 +0100] "GET /path/to/dir/image.jpg HTTP/1.1" 304 - "www.something-else-domain.si/index.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"
www.domain.si:80 193.77.xxx. xxx - - [06/Nov/2013:12:21:45 +0100] "GET /path/to/dir/image. jpg HTTP/1.1" 304 - "www.domain.si/index.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"
domain.si:80 193.77.xxx. xxx - - [06/Nov/2013:12:21:45 +0100] "GET /path/to/dir/image. jpg HTTP/1.1" 304 - "www.domain.si/index.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"
我只想要grep只有domain.si和www.domain.si以及whatever.domain.si而不是some-else-domain.si。我怎么能这样做?谢谢你的帮助。
答案 0 :(得分:2)
egrep '^([^ ]*\.)?domain\.si' /var/log/access.log
将此分开:
^
是该行的开头。(xxx)?
是“匹配xxx
或没有”;在这种情况下,匹配:
domain.si
)[^ ]*\.
,任何不是空格的字符串,后跟一个点。这与可选的www.
或whatever.
部分匹配。domain\.si
只是匹配domain.si
部分。使用^
锚定以及“无空格”位确保您只匹配行开头的内容(而非GET /domain.si
之类的请求。)
答案 1 :(得分:0)
gnu awk
解决方案
awk '/www.domain$|domanin$/ {print $NF RS}' RS=".si"
www.domain.si
"www.domain.si
"www.domain.si
您的示例中存在问题。 url