免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4554 | 回复: 11
打印 上一主题 下一主题

[文本处理] CentOS7怎么用awk获取Mac地址并赋值给量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-01-06 12:35 |只看该作者 |倒序浏览
求教:在CentOS7下获取Mac地址的值,我只能在知道网卡名称的情况下用下面的命令实现
[root@localhost ~]#  ifconfig eno16777984 | grep ether |awk '{print $2}'
00:0c:29:ba:59:97
而当记录为多条时,要怎么将awk所取到的值分别赋值给不同的shell变量呢??
[root@localhost ~]# ip add | grep ether |awk '{print $2}'
00:0c:29:ba:59:94
00:0c:29:ba:59:9e
比如怎么将上面的两个Mac地址值赋值给变量A和B呢?
谢谢解答!

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
2 [报告]
发表于 2017-01-06 13:11 |只看该作者
more file
  1. 00:0c:29:ba:59:94
  2. 00:0c:29:ba:59:9e
复制代码

  1. eval $(awk 'BEGIN{l=split("A B",a)}{while(i++<l){print a[i]"="$0;break}}' file)
复制代码
  1. echo $A $B
复制代码

论坛徽章:
0
3 [报告]
发表于 2017-01-06 15:19 |只看该作者
回复 2# moperyblue

谢谢,之前老调不出来,awk还需要熟悉。

改成这样 一行实现了
eval $(ip add | grep ether |awk 'BEGIN{l=split("A B",a)}{while(i++<l){print a"="$2;break}}')  

论坛徽章:
0
4 [报告]
发表于 2017-01-06 15:27 |只看该作者
回复 2# moperyblue

再次请教:
为什么我想获取网卡名称,用下面的命令可以得到这样的结果
[root@localhost ~]# eval $(ip add |grep BROADCAST |awk 'BEGIN{l=split("NET1 NET2",a)}{while(i++<l){print a"="$2;break}}')        
[root@localhost ~]# echo $NET2
eno33557248:

但如果我想去掉“eno33557248:”中的冒号,用下面命令却报错呢??要怎么去掉冒号?
[root@localhost ~]# eval $(ip add |grep BROADCAST |awk -F ': ' 'BEGIN{l=split("NET1 NET2",a)}{while(i++<l){print a"="$2;break}}')
-bash: NET1: ?????

论坛徽章:
0
5 [报告]
发表于 2017-01-06 15:29 |只看该作者
补充:ip add内容如下:

[root@localhost ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno16777984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:ba:79:94 brd ff:ff:ff:ff:ff:ff
    inet 192.16.116.166/24 brd 172.16.116.255 scope global eno16777984
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feba:5994/64 scope link
       valid_lft forever preferred_lft forever
3: eno33557248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:ba:79:9e brd ff:ff:ff:ff:ff:ff

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
6 [报告]
发表于 2017-01-06 16:17 |只看该作者
  1. ip add|awk -F'[ :]+' '/BROADCAST/{print $2}'
复制代码

这样?

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
7 [报告]
发表于 2017-01-06 16:58 |只看该作者
本帖最后由 moperyblue 于 2017-01-06 17:00 编辑

回复 5# xf_flutter


  1. eval $(ip add|awk 'BEGIN{l=split("NET1 NET2",a)}/BROADCAST/{while(i++<l){print a[i]"="$2;break}}' FS=': ')
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
8 [报告]
发表于 2017-01-06 19:12 |只看该作者
本帖最后由 zy86416779 于 2017-01-06 19:13 编辑

自动识别有几个网卡,然后对其进行赋值。借鉴了moperyblue的想法,进行了一点改进。
1. 三个网卡
  1. [root@CentOS_6 experiment]# character=$(echo {a..z});character=$(echo $character | sed 's/ //g');line=$(cat test.txt | egrep ": eno"|wc -l);real_character=$(echo ${character:0:${line}});cat test.txt | egrep ": eno"|awk -F":| " -v real_character="$real_character" 'BEGIN{l=split(real_character,array,"")}{if(NR==1){i=1};print array[i]"="$3;i++}'
  2. a=eno16777984
  3. b=eno33557248
  4. c=eno45667248
  5. [root@CentOS_6 experiment]# cat test.txt
  6. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  7.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  8.     inet 127.0.0.1/8 scope host lo
  9.        valid_lft forever preferred_lft forever
  10.     inet6 ::1/128 scope host
  11.        valid_lft forever preferred_lft forever
  12. 2: eno16777984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  13.     link/ether 00:0c:29:ba:79:94 brd ff:ff:ff:ff:ff:ff
  14.     inet 192.16.116.166/24 brd 172.16.116.255 scope global eno16777984
  15.        valid_lft forever preferred_lft forever
  16.     inet6 fe80::20c:29ff:feba:5994/64 scope link
  17.        valid_lft forever preferred_lft forever
  18. 3: eno33557248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  19.     link/ether 00:0c:29:ba:79:9e brd ff:ff:ff:ff:ff:ff
  20. 4: eno45667248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  21.     link/ether 00:0c:29:ba:79:9e brd ff:ff:ff:ff:ff:ff
复制代码
2. 两个网卡
  1. [root@CentOS_6 experiment]# character=$(echo {a..z});character=$(echo $character | sed 's/ //g');line=$(cat test.txt | egrep ": eno"|wc -l);real_character=$(echo ${character:0:${line}});cat test.txt | egrep ": eno"|awk -F":| " -v real_character="$real_character" 'BEGIN{l=split(real_character,array,"")}{if(NR==1){i=1};print array[i]"="$3;i++}'
  2. a=eno16777984
  3. b=eno33557248
  4. [root@CentOS_6 experiment]# cat test.txt
  5. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  6.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  7.     inet 127.0.0.1/8 scope host lo
  8.        valid_lft forever preferred_lft forever
  9.     inet6 ::1/128 scope host
  10.        valid_lft forever preferred_lft forever
  11. 2: eno16777984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  12.     link/ether 00:0c:29:ba:79:94 brd ff:ff:ff:ff:ff:ff
  13.     inet 192.16.116.166/24 brd 172.16.116.255 scope global eno16777984
  14.        valid_lft forever preferred_lft forever
  15.     inet6 fe80::20c:29ff:feba:5994/64 scope link
  16.        valid_lft forever preferred_lft forever
  17. 3: eno33557248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  18.     link/ether 00:0c:29:ba:79:9e brd ff:ff:ff:ff:ff:ff
复制代码
3. 五个网卡
  1. [root@CentOS_6 experiment]# character=$(echo {a..z});character=$(echo $character | sed 's/ //g');line=$(cat test.txt | egrep ": eno"|wc -l);real_character=$(echo ${character:0:${line}});cat test.txt | egrep ": eno"|awk -F":| " -v real_character="$real_character" 'BEGIN{l=split(real_character,array,"")}{if(NR==1){i=1};print array[i]"="$3;i++}'
  2. a=eno16777984
  3. b=eno33557248
  4. c=eno45667248
  5. d=eno16777976
  6. e=eno16127984
  7. [root@CentOS_6 experiment]# cat test.txt
  8. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
  9.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  10.     inet 127.0.0.1/8 scope host lo
  11.        valid_lft forever preferred_lft forever
  12.     inet6 ::1/128 scope host
  13.        valid_lft forever preferred_lft forever
  14. 2: eno16777984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  15.     link/ether 00:0c:29:ba:79:94 brd ff:ff:ff:ff:ff:ff
  16.     inet 192.16.116.166/24 brd 172.16.116.255 scope global eno16777984
  17.        valid_lft forever preferred_lft forever
  18.     inet6 fe80::20c:29ff:feba:5994/64 scope link
  19.        valid_lft forever preferred_lft forever
  20. 3: eno33557248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  21.     link/ether 00:0c:29:ba:79:9e brd ff:ff:ff:ff:ff:ff
  22. 4: eno45667248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
  23.     link/ether 00:0c:29:ba:79:9e brd ff:ff:ff:ff:ff:ff
复制代码

5: eno16777976: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:ba:79:94 brd ff:ff:ff:ff:ff:ff
    inet 192.16.116.166/24 brd 172.16.116.255 scope global eno16777984
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feba:5994/64 scope link
       valid_lft forever preferred_lft forever
6: eno16127984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:ba:79:94 brd ff:ff:ff:ff:ff:ff
    inet 192.16.116.166/24 brd 172.16.116.255 scope global eno16777984
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feba:5994/64 scope link
       valid_lft forever preferred_lft forever
[/code]

论坛徽章:
0
9 [报告]
发表于 2017-01-16 12:45 |只看该作者
回复 6# o枫叶o飘零

可以的,谢谢!

论坛徽章:
0
10 [报告]
发表于 2017-01-16 12:45 |只看该作者
回复 7# moperyblue

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP