加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – sed在mac地址中插入冒号

发布时间:2020-12-14 06:05:46 所属栏目:百科 来源:网络整理
导读:我有这种格式的mac地址列表: 412010000018412010000026412010000034 我想要这个输出: 41:20:10:00:00:1841:20:10:00:00:2641:20:10:00:00:34 我试过这个,但没有用: sed 's/([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/1:2:3:4/g' mac_list 我该怎么办
我有这种格式的mac地址列表:

412010000018
412010000026
412010000034

我想要这个输出:

41:20:10:00:00:18
41:20:10:00:00:26
41:20:10:00:00:34

我试过这个,但没有用:

sed 's/([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/1:2:3:4/g' mac_list

我该怎么办?

解决方法

您必须使用正确的sed语法:

{I}
     matches exactly I sequences (I is a decimal integer;
     for portability,keep it between 0 and 255 inclusive).

(REGEXP)
     Groups the inner REGEXP as a whole,this is used for back references.

这是一个覆盖前两个字段的示例命令

sed 's/^([0-9A-Fa-f]{2})([0-9A-Fa-f]{2}).*$/1:2:/'

以下命令可以处理完整的MAC地址,并且易于阅读:

sed -e 's/^([0-9A-Fa-f]{2})/1_/'  
     -e 's/_([0-9A-Fa-f]{2})/:1_/' 
     -e 's/_([0-9A-Fa-f]{2})/:1_/' 
     -e 's/_([0-9A-Fa-f]{2})/:1_/' 
     -e 's/_([0-9A-Fa-f]{2})/:1_/' 
     -e 's/_([0-9A-Fa-f]{2})/:1/'

根据@Qtax发布的全局替换的perl解决方案的想法,可以得到更短的解决方案:

sed -e 's/([0-9A-Fa-f]{2})/1:/g' -e 's/(.*):$/1/'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读