1

我有一个简单的正则表达式,并在十六进制数字上测试 egrep

regex="^([0-9A-Fa-f]{2})(:[0-9A-Fa-f]{2})*$"

当我尝试回显任何输入时,它只是打印 Nothing

echo "fe:fe" | egrep $regex

该问题仅在 Solaris Box 上出现,Linux Box 上不出现

在 Solaris 中

bash-3.2# regex="^([0-9A-Fa-f]{2})(:[0-9A-Fa-f]{2})*$"
bash-3.2# echo "fe:fe" | egrep $regex
bash-3.2# 
4

2 回答 2

2

我没有 Solaris,但这里还是一台旧的 SunOS 机器。egrep 手册页说明:

/usr/bin/egrep 实用程序接受 regexp(5) 手册页中描述的完整正则表达式,除了 ... 和 \{ 和 \},...

所以你不能使用重复,而是尝试:

regex="^([0-9A-Fa-f][0-9A-Fa-f])(:[0-9A-Fa-f][0-9A-Fa-f])*$"
于 2013-06-13T09:56:40.060 回答
2

使用/usr/xpg4/bin/egrep而不是/usr/bin/egrep. 前者符合 POSIX 并支持完整的正则表达式。

于 2013-06-13T10:47:59.047 回答