繁体   English   中英

sed 和解析 MAC 地址

[英]sed and parsing MAC address

我正在尝试使用 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 不返回任何内容的情况。 怎么做?

sed 的默认设置是打印完整的模式空间。

添加选项-n (禁止打印模式空间)并添加命令p (打印当前模式空间):

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

现在 sed 仅在可以替换某些内容时打印模式空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM