正则表达式将 MAC 地址的最后三个八位字节替换为 XX:XX:XX 并保留前三个?

问题描述 投票:0回答:1

我在 stackoverflow 上找到了一个解决方案,将 MAC 地址的所有 6 个八位字节替换为 XX。

出于隐私原因,我在发布路由器日志时使用此功能。

它使用

's/([0-9a-eA-E]{2}:){5}[0-9a-eA-E]{2}/XX:XX:XX:XX:XX:XX/g'

或简化版

's/..:..:..:..:..:../XX:XX:XX:XX:XX:XX/g'

但是,为了帮助对特定设备进行故障排除,我想保留 MAC 地址的前 3 个八位字节,并仅用 XX 替换最后 3 个八位字节,例如

AA:22:CC:44:DD:66 变为 AA:22:CC:XX:XX:XX

我尝试深入研究正则表达式,但替换元素的模式匹配非常困难。 我尝试了一个简单的:

's/..:..:..:/XX:XX:XX:/g' 令我惊讶的是它确实有效,但似乎更多的是运气好而不是设计,我不确定是否有什么会绊倒起来吧。

如果上面的(第一个)更稳健的表达式有类似的解决方案,那将会很有用。

其次,我注意到上面的第一个(更严格的)表达式:

's/([0-9a-eA-E]{2}:){5}[0-9a-eA-E]{2}/XX:XX:XX:XX:XX:XX/g'

适用于 AA:22:CC:DD:EE:66

不适用于 AA:22:CC:DD:EE:FF

需要更改什么才能在任何 MAC 地址上工作?

regex regexp-replace mac-address
1个回答
0
投票
您可以在正则表达式模式中使用

$

 结束标记:

Find: [A-Fa-f0-9]{2}(?::[A-Fa-f0-9]{2}){2}$ Replace: XX:XX:XX
    
© www.soinside.com 2019 - 2024. All rights reserved.