为macchanger更新oui.lixt

一共两步,第一从网上下载最新的列表,用wget实现,第二用Linux下的字符处理工具将其格式改变成程序需要的方式(每一行是MAC的前三位+厂商名字)。具体代码如下:

1 wget http://standards.ieee.org/regauth/oui/oui.txt
2 cat oui.txt | grep "(hex)" | awk 'BEGIN {FS="-"} {printf "%s %s %s\n", $1,  $2,  $3}' | awk '{printf "%s %s %s\t%s", $1, $2, $3, $5}{for(i=6;i<=NF;i++){printf " %s", $i}}{printf "\n"}' > oui-new.txt && printf "\n" >> oui-new.txt

然后查看一下oui-new.txt,就是想要的内容了。

越来越感觉到Linux的强大之处了。

顺便记录一下第二条命令的含义吧。首先用cat oui.txt取出文档内容,然后用grep "(hex)"找出所有包含(hex)的行,接着用awk 'BEGIN {FS="-"} {printf "%s %s %s\n", $1,  $2,  $3}'把mac地址里面的"-"换成空格,最后用awk '{printf "%s %s %s\t%s", $1, $2, $3, $5}{for(i=6;i<=NF;i++){printf " %s", $i}}{printf "\n"}'把第四列的(hex)去掉。完毕

 

 

今天忽然发现上面的代码有BUG。在将“-”替换为空格的时候,没有注意到厂商的名字里可能也含有“-”,因此可能会丢失信息。

修改后的代码如下:

1 wget http://standards.ieee.org/regauth/oui/oui.txt
2 cat oui.txt | grep "(hex)" | awk 'BEGIN {FS="-"} {for(i=1;i<NF;i++)printf "%s ", $i}{printf "%s\n", $NF}' | awk '{printf "%s %s %s\t%s", $1, $2, $3, $5}{for(i=6;i<=NF;i++){printf " %s", $i}}{printf "\n"}' > oui-new.txt && printf "\n" >> oui-new.txt

 

转载于:https://www.cnblogs.com/02xiaoma/archive/2013/05/29/3105661.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值