没有PERL的2个字符串之间的GREP

时间:2013-08-12 19:51:07

标签: regex grep

我想在-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\)'

这个可行,但我得到()的结果。

1 个答案:

答案 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])

enter image description here

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:~#