2017-05-24 80 views
1

爲什麼不能這樣工作,應該從我的文本文件輸出30:84:A9:9B:2A:67?bash grep mac地址unix/linux用分號

grep [A-F0-9]\:{5}[A-F0-9] textfile.txt 
+2

我懷疑它是否匹配類似'A ::::: 3' – CollinD

+0

之類的東西,我該如何添加「:」呢? – moody

+0

grep [A-F0-9] \:[A-F0-9] \:[A-F0-9] \:[A-F0-9] \:[A-F0-9] \:[A- F0-9] textfile.txt。這似乎是如此不必要...... – moody

回答

1

試試這個:

$ echo 30:84:A9:9B:2A:67 | grep -P "([A-F0-9]{2}:){5}[A-F0-9]{2}" 
30:84:A9:9B:2A:67 
+0

完美的工作,但爲什麼使用-P? – moody

+0

'-P'是perl兼容的正則表達式。沒有它,它不適合我。 – Timo

+1

@moody也可以使用-E,都允許使用未轉義的括號。您可以使用BRE重寫爲「grep」\([A-F0-9] \ {2 \}:\)\ {5 \} [A-F0-9] \ {2 \}「'沒有標記。 – 123

0

在你的問題 「[A-F0-9]:{5}」 試圖匹配的字母數字字符加冒號五次:X:X: X:X:X:

另外,grep接受基本正則表達式(BRE),因此您需要轉義括號和括號。