正如我在不同的thread中所要求的那样,正则表达式正在使用shell脚本正常工作但是当我使用echo命令时
echo "2001:0Db8:85a3:0000:8a2e:0370:7334" | grep "^([0-9a-fA-F]{0,4}:){1,7}([0-9a-fA-F]){0,4}$"
没有输出,echo $?
返回 1
正则表达式不能与echo / grep一起使用吗?
答案 0 :(得分:2)
您在此处使用的是ERE POSIX语法。使用-E
选项可使grep
使用POSIX ERE。
或者,转义(
和)
以及{
和}
以使模式与POSIX BRE兼容:
echo "2001:0Db8:85a3:0000:8a2e:0370:7334" | grep "^\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}$"
请参阅online demo