2012-11-30 25 views
1

我正在编写一个BASH脚本,输出iptables -L -n并搜索IP地址的存在。我坚持如何使用egrep。大致为:使用egrep从shell变量中按八位字节搜索IP地址

CHECK=$(iptables -L -n | egrep $the_string) 

这“看起来”像它会工作,但它并没有结束分隔符$所以它会匹配:

25.24.24425.24.24

当我真的只是只需匹配25.24.24

我试图逃避这一点,但$创建正则表达式的问题。

至少这是我发现在iptables系统中搜索IP的唯一方法。它似乎没有任何查询机制(令人费解)。

我可能失去了一些东西很简单的在这里,并且只需要一个指针或两个:-)

感谢。

回答

0

你应该反斜杠.:这意味着任何字符在正则表达式...

iptables -L -n | grep "25\.24\.24$" 

(无需egrep有)

0

$在正则表达式工作结束如预期的那样:

the_ip=25.24.24 
the_string=$(echo $the_ip | sed 's/\./\\\./g') 
iptables -L -n | egrep "$the_string$" 
相关问题