我在 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 地址上工作?
$
结束标记:
Find: [A-Fa-f0-9]{2}(?::[A-Fa-f0-9]{2}){2}$
Replace: XX:XX:XX