Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75131
  • 博文数量: 44
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-19 16:49
文章分类

全部博文(44)

文章存档

2018年(2)

2017年(1)

2016年(41)

我的朋友

分类: 系统运维

2016-04-29 17:26:05

原文地址:通过取IP来拆解AWK用法 作者:w787815


  1. [root@client test]# ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}'
  2. 192.168.88.110
  3. 方法二:通过awk同时使用多个分隔符来实现:
  4. [root@client test]# ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}'
  5. 192.168.88.110
  6. 通过使用空格或冒号来做分隔符,然后一次性取出结果,就是空格或冒号可以看做是同一个分隔符。
  7. 方法二要计算$13,因此再调试上会浪费时间

  8. 方法三:通过awk同时使用多个分隔符,然后通过正则匹配多个分隔符的方法来实现:
  9. [root@client test]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'
  10. 192.168.88.110
  11. NR是行号,分隔符+号匹配,[]里一个或多个任意一个分隔符,这里就是匹配一个或多个冒号或空格。
  12. 1)awk -F 后面跟分隔符[空格:]+;,其中[空格:]多分隔符写法,意思是以空格或冒号做分隔,后面的"+"号是正则表达式,意思是匹配前面空格或冒号,两者之一的1个或1个以上。
  13. 2)NR==2和sed -n "2p",相当,意思都是选择第几行,例:
  14. [root@client test]# ifconfig eth0|awk NR==2
  15.           inet addr:192.168.88.110 Bcast:192.168.88.255 Mask:255.255.255.0

  16. 3)指定awk -F '[ :]+'分隔符后,不同字符串被分隔的列依次为:
  17.            inet addr:192.168.88.110 Bcast:192.168.88.255 Mask:255.255.255.0
  18. 第一列为空格 ,第二类:inet addr,后面以此类推

  19. 4)整个awk部分意思是,通过NR==2取出第二行,然后,通过-F '[-:]+多分隔符正则匹配,然后通过{print $4}打印出第四列 !
  20. 5)来几个例子
  21. [root@client ~]# echo ---1:----2|awk -F '[-:]+' '{print $2}'
  22. 1
  23. [root@client ~]# echo ---1:----2|awk -F '[-:]+' '{print $3}'
  24. 2
  25. [root@client ~]# echo ---1:::::2|awk -F '[-:]+' '{print $3}

阅读(1215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~