我有如下行的日志文件:
07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}
如何仅从www.website.pl/some,site.html
所有行中获取?
这可以用“sed”或其他命令来完成吗?
我有如下行的日志文件:
07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}
如何仅从www.website.pl/some,site.html
所有行中获取?
这可以用“sed”或其他命令来完成吗?
Cut还支持分隔符和字段选择。
$ cut -d\| -f7
07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}
www.website.pl/some,site.html
是的,使用 awk。
只需处理您的文件
awk -F '|' '{print $7}'
您的示例行上的一个小成绩单:
$ echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}' | awk -F '|' '{print $7}'
www.website.pl/some,site.html
CAVEAT这假定您的文件中除了用于分隔符的管道外没有其他管道。
这可能对您有用:
echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}'|
sed 's/^\(\([^|]*\)|\)\{7\}.*/\2/'
www.website.pl/some,site.html
或者,如果站点都开始www
:
echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}'|
sed 's/.*\(www[^|]*\).*/\1/'
www.website.pl/some,site.html