egrep带有范围查询的多个AND

时间:2012-11-27 12:53:37

标签: linux grep

我正在尝试获取已定义范围内的php服务占用的端口列表。

这似乎工作正常..

lsof | grep -E 'php.+55000.+LISTEN'
php       6446  user   11u     IPv4             694089      0t0        TCP *:55000 (LISTEN)

但是当我进行范围查询时,它似乎没有给出正确的结果

lsof | grep -E 'php.+[55000-55001].+LISTEN'
php       6446  user   11u     IPv4             694089      0t0        TCP *:55000 (LISTEN)
php       6446  user   12u     IPv4             694090      0t0        TCP *:51000 (LISTEN)

请帮助,我的正则表达技巧是业余的。

2 个答案:

答案 0 :(得分:2)

您要查找的是lsof -i选项。在手册页上,它说:

To list all files using any protocol on ports 513, 514, or 515 of host wonderland.cc.purdue.edu, use:

       lsof -i @wonderland.cc.purdue.edu:513-515

因此,对于您的情况,您可以从:

开始
lsof -i :55000-55001

而不是使用你需要的所有grep得到答案。

此致

答案 1 :(得分:0)

这对你有用吗? (港口范围55000-60000)

lsof|awk '$2>55000 && $2<60000 && /php/ && /LISTEN/'