grep中的正则表达式

时间:2011-10-28 18:47:10

标签: unix

我正在尝试使用正则表达式匹配有效的IP地址。我有一个表达问题是我无法理解grep行为。

匹配0-255范围内的数字我做了: 回声15 | grep -E“[01]?[0-9] [0-9]?| 25 [0-5] | 2 [0-4] [0-9]”

但它匹配所有数字!

例如3000也匹配 - 我认为它因为它匹配“30”这是整个字符串3000的一部分...然后我试过  grep -E“([01]?[0-9] [0-9]?| 25 [0-5] | 2 [0-4] [0-9])$”

(尝试匹配0-255,然后是行尾) 但这似乎并没有奏效。任何建议??

将括号括在正则表达式的不同部分是否有效?像这样的事情 - > ((a | b)c)(l | m)

1 个答案:

答案 0 :(得分:1)

 echo 15 | grep -E "^([01]?[0-9][0-9]?|25[0-5]|2[0-4][0-9])$"