让自己疯狂。我试图从access.log中获取域名(http://www.example.com)。日志的样子:
tail access.log
Fri, 13 Jul 2012 20:32:03 -0700,INFO,6fgmd8fk,params,http://www.example.com/images/CIV-260.jpg|
我尝试了这种单线程的许多变体(with sed and awk):
tail -4 access.log |grep http |awk {'print $6'} |cut -c28- |awk '$1>".com"' |sort |uniq
http://www.example.com/2713-7807.jpg|
http://www.example.com/2713-7808.jpg|
http://barfoo.com/img/14616_20120711182527.jpg|
http://foobar.com/css/14616_20120713142151.css|
我被困住了。
答案 0 :(得分:3)
也许只是
awk -F/ '{print $3}'
如果你没有更多' /'比你的例子显示。 请注意,这只是域名,正如您的问题所示。
答案 1 :(得分:2)
使用grep
:
grep -Po '(?<=http://)[^/]+' access.log | sort -u
如果您想将http://
作为域名的一部分,
grep -Po 'http://[^/]+' access.log | sort -u
答案 2 :(得分:1)
使用sed
:
sed -n 's|.*\(http://[^/]*\)/.*|\1|p' access.log | sort -u