0

我有如下行的日志文件:

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”或其他命令来完成吗?

4

3 回答 3

2

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
于 2012-05-22T06:57:08.447 回答
1

是的,使用 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这假定您的文件中除了用于分隔符的管道外没有其他管道。

于 2012-05-22T06:44:27.533 回答
0

这可能对您有用:

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
于 2012-05-22T07:01:47.843 回答