2017-10-19 86 views
2

我想解析MAC地址與sed,但我面臨的東西,我無法解釋。sed和解析MAC地址

這裏有兩個例子 - 好的,錯:

好一個:

# echo "01:23:45:67:89:ab" | sed -r 's/^([^:]{2}):([^:]{2}):([^:]{2}):([^:]{2}):([^:]{2}):([^:]{2})$/\1_\2_\3_\4_\5_\6/' 
01_23_45_67_89_ab 

錯誤之一:

# echo "tadam" | sed -r 's/^([^:]{2}):([^:]{2}):([^:]{2}):([^:]{2}):([^:]{2}):([^:]{2})$/\1_\2_\3_\4_\5_\6/' 
tadam 

第一個例子是工作的罰款 - 它返回正確的字符串解析。但如何解釋第二個?爲什麼sed返回任何字符串(tadam),而這個字符串不匹配te regexp?

任何人都可以解釋它嗎?我希望實現sed在regexp不匹配字符串時不返回任何內容的情況。怎麼做?

回答

2

sed的默認設置是打印整個圖案空間。

添加選項-n(抑制模式空間打印),並添加命令p(打印當前模式空間):

echo "..." | sed -r -n 's/.../.../p' 

現在的sed只打印模式空間,如果東西可以替代。