gpt4 book ai didi

linux - sed和解析MAC地址

转载 作者:太空狗 更新时间:2023-10-29 12:10:27 26 4
gpt4 key购买 nike

我正在尝试使用 sed 解析 MAC 地址,但遇到了一些我无法解释的问题。

这里有 2 个例子 - 好的和错误的:

好一个:

# 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 仅在可以替换某些内容时才打印模式空间。

关于linux - sed和解析MAC地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com