2017-08-08 114 views
1

正則表達式正在與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

回答

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

+0

'grep'中的'-r'表示遞歸搜索。只有其他支持顯示正則表達式的選項是'-P'(PCRE) – anubhava

+1

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

+0

是的,我也這麼認爲:) – anubhava