我有一个简单的正则表达式,并在十六进制数上测试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#
答案 0 :(得分: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])*$"
答案 1 :(得分:2)
使用/usr/xpg4/bin/egrep
代替/usr/bin/egrep
。前者符合POSIX标准,支持完整的正则表达式。