正则表达式 - 验证IPv6地址

问题描述:

正则表达式正在与shell脚本罚款,在不同的thread问的我,但是当我使用echo命令作为正则表达式 - 验证IPv6地址

echo "2001:0Db8:85a3:0000:8a2e:0370:7334" | grep "^([0-9a-fA-F]{0,4}:){1,7}([0-9a-fA-F]){0,4}$" 

没有输出和echo $?回报

Do正则表达式不适用于echo/grep?

+0

用途:'回声“2001:将0db8:85±3:0000:8a2e :0370:7334“| grep -E“^([0-9a-fA-F] {0,4}:){1,7}([0-9a-fA-F]){0,4} $”'用于扩展正则表达式支持'grep'中的'grep' – anubhava

您在此处使用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

+0

'grep'中的'-r'表示递归搜索。只有其他支持显示正则表达式的选项是'-P'(PCRE) – anubhava

+1

@anubhava我很抱歉,我混淆了'sed'和'grep'。 –

+0

是的,我也这么认为:) – anubhava