shell补齐mac地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell补齐mac地址相关的知识,希望对你有一定的参考价值。
我有个文件,格式如下:
0:10:f3:10:a:36 192.168.1.151
我想将第一列的mac地址的格式改成00:10:f3:10:0a:36
也就是只有一位的前面就加上个0,怎么弄呢?
sed 's/^[a-fA-F0-9]:/0&/g;s/:\([a-fA-F0-9]:\)/:0\1/g' file.txt
或者:
awk 'print $1' file.txt | awk -F: 'for(i=1;i<NF;i++)printf("%02s:",$i);printf("%02s",$NF)'追问
你很厉害!再问你一个问题,我想把文件中的0换成00,我用的gsub,但是这样子20就变成200了,怎么办呢?我只想把0替换了
追答20 变为 200 是正确的啊,你的确是只把0替换成00了,2 还在啊。
你的需求是。。。? 你的gsub 怎么写的?
我想把数值为0的变成00,数值为20的不变,我写的是awk 'gsub(/0/,"00");print' file11.txt
追答0:10:f3:10:a:36 192.168.1.151
对这个例子,a 前面不用加 0,是要把 0 变为 00 ?
变为这样:00:10:f3:10:a:36 192.168.1.151
对不?
不是,我的文件现在是这个样子:
192.168.1.20.0:10:f3:10:0a:36
另一个文件是
192.168.1.20.00:10:f3:10:0a:36
我想让这两个文件变成一样的,也就是把上面那个文件的0变成00,但是这样子20就变成200了,怎么解决?
用正则表达式匹配的时候不能光匹配0,还要匹配前后的字符串。
awk 'r=gensub(/([.:])(0[.:])/,"\\10\\2","g");print r' file.txt
你得分析下目前格式的文件的特殊性,比如是否有空间缺失0的
如果仅仅是第一行第一个字符的话,可以用如下命令:
sed -i "1,$s/^0/00" xxx.txt
如果有其他情况还需分析追问
一楼的0全变成00了,你的运行不了,而且我不只是要改变第一个字符,我想着用awk-F“:"分割什么的,具体的就不会用了
追答呵呵,不好意思啊,忘加了一个参数,正确的是这个
sed -i "s/^0/00/g" xxx.txt
如果是awk处理的话,你得将文件拿出部分来,找找规律
Linux中用shell怎么获取IP地址及MAC地址?
参考技术A 我给出前三个的答案吧#!/bin/bash
OUTPUT=jk0701_xxx_ks.txt
/sbin/ifconfig eth0 | sed -n '/inet addr:/ s/inet addr:/IPADDR=/pg' | awk -F" " 'print $1' >$OUTPUT
/sbin/ifconfig eth0 | sed -n '/HWaddr/ s/^.*HWaddr */HWADDR=/pg' >> $OUTPUT
netstat -an |grep ":23" |grep "ESTABLISHED" | grep -cv "grep" >> $OUTPUT
以上是关于shell补齐mac地址的主要内容,如果未能解决你的问题,请参考以下文章
用shell实现MAC地址最后一位增加: 如,mac=70:65:82:00:21:13 对其进行加1操作后成为70:65:82:00:21:14