我想在-P
(-E
)之后使用--extended-regexp
(PERL)在两个字符串/字符之间进行GREP。
我知道怎么用awk,sed和grep -Po这样做,这不是这个问题。我问是否可以仅使用grep -E
进行此操作。以下是(
和)
:
示例:
echo "My IP=(192.168.0.1):205 bla bla" | grep -oE '\(\b.*\b\)'
这个可行,但我得到(
和)
的结果。
答案 0 :(得分:0)
鉴于在示例文本中,parans之间的文本看起来像一个ip地址,并且文本的其余部分不包含看起来像ip地址的内容,您可以简单地省略parans并查找IP地址。
此表达式将匹配看起来像IP地址的字符串,并将八位字节限制为0到255之间的数值。
(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])
root@mysystem:~# echo "My IP=(192.168.0.1):205 bla bla" | grep -oE '(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])'
192.168.0.1
root@mysystem:~#