[]:有框表示从最开始计算(小分隔符),否则从数据开始计算,

无[] +:加号则从最开始计算,否则从数据开始计算

[] +: 加号则从最开始计算,否则从数据最开始计算

请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)

解答:

说明:此题解答方法已经给大家讲解了不下15种,还可以有很多,在这里给大家着重讲下awk的技巧用法,希望大家能多重视老师的思路、思维过程,不过过分关注问题的答案,以便达到学一通十的效果。

方法一【此法为绿叶】:如果用awk来处理的话,一般的同学可能会用下面的办法实现:

[root@oldboy ~]# ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}'

10.0.0.162

小结:这个方法是常规方法,很好。但是我们有没有更简单的awk实现方法呢?往下看。

方法二【此法为小红花】:通过awk同时使用多个分隔符来实现:

[root@oldboy ~]# ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}'

192.168.1.186

提示:本题通过使用空格或冒号来做分隔符,然后一次性取出结果,就是空格或冒号可以看做是同一个分隔符。

小结:这个方法很方便吧,同学们可以多用,选取包含IP地址行的特殊关键字'inet addr’过滤然后,使用awk以空格和:同时做分隔符,然后取出需要的内容。

本答案的最大缺点就是计算$n的时候很费劲,因为inet前面有多个空格,查到$13,真是不容易,如此看来从实现时间上可能还不如第一个方法快呢?那好引出我们今天的关键答案案例。

方法三【大红花出场】:通过awk同时使用多个分隔符,然后通过正则匹配多个分隔符的方法来实现:

[root@oldboy ~]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'

10.0.0.185

我们来说明下这个简单易用的好办法:

提示:本题NR是行号,分隔符+号匹配,[]里一个或多个任意一个分隔符,这里就是匹配一个或多个冒号或空格。

1)awk -F 后面跟分隔符‘[空格:]+’,其中[空格:]多分隔符写法,意思是以空格或冒号做分隔,后面的"+"号是正则表达式,意思是匹配前面空格或冒号,两者之一的1个或1个以上。

2)NR==2和sed -n "2p",相当,意思都是选择第几行,例:

[root@oldboy ~]# ifconfig eth0|awk NR==2

inet addr:10.0.0.185  Bcast:10.0.0.255  Mask:255.255.255.0

3)指定awk -F '[ :]+'分隔符后,不同字符串被分隔的列依次为:

inet

addr

10.0.0.185

Bcast:10.0.0.255  Mask:255.255.255.0

第一列

第二列

第三列

第四列

后面忽略不计。

4)整个答案awk部分意思是,通过NR==2取出第二行,然后,通过-F '[-:]+多分隔符正则匹配,然后通过{print $4}打印出第四列 !谢谢杨瑞同学的答案啊, 懒得写了,所以让你总结下。嘿嘿,看到后别怪老师啊。

5)掌握了理论要去实践验证才是科学严谨的学习态度,好,来几个例子实践说话吧。

[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $2}'

1

[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $3}'

2

[root@oldboy ~]# echo ---1:::::2|awk -F '[-:]+' '{print $3}'

2

转载于:https://blog.51cto.com/chenqj/1970316

linux三剑客之awk必杀技一例   linux命令相关推荐

  1. 深入浅出linux三剑客之awk必杀技一例

    缘起:上完第三节培训课后,同学们群内讨论氛围相当的好,那么就再给大家一点惊喜,希望大家继续加油努力,达到你们的第一阶段薪水目标. 老男孩linux培训第三节课程课前第考试三题,问题如下: 3.请执行命 ...

  2. 深入浅出linux三剑客之sed必杀技一例

    缘起:上完培训课后,同学们对sed加正则处理问题的热情高涨,氛围相当好,但是,有个别同学还是有些晕乎,因此,撰写此文.此例如果搞熟练了,sed和正则的大部分常用技术你掌握起来就简单了. 如果还有不会的 ...

  3. 深入浅出三剑客之awk必杀技一例

    老男孩linux培训第三节课程课前第考试三题,问题如下:  3.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答). 解答: 说明:此题解答方法已经给大 ...

  4. linux三剑客之awk命令详解

    linux三剑客之awk命令详解 awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及生成报表等等.awk工具主要用于格式化输出,可以用类似于处理表格的方式处理文 ...

  5. linux三个冒号加端口,不看绝对后悔的Linux三剑客之awk实战精讲

    一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel).处理的数据可以是 ...

  6. 利器 | 测试必会之 Linux 三剑客 ( grep / awk / sed )

    本文为霍格沃兹测试学院优秀学员课程学习系列笔记,想一起系统进阶的同学文末加群交流. Linux 给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有 Windows 窗口界面直观方便.其实Linu ...

  7. Linux三剑客之awk详解

    第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...

  8. Linux三剑客之awk最佳实践

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 知识点: 记录与字段 模式匹配:模式与动作 基本的awk执行过程 awk常用内置变量(预定义变量) awk数组 a ...

  9. awk 匹配_详解Linux三剑客之awk

    第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...

最新文章

  1. Debain/ArchLinux/Gentoo 等将合并为超级Linux
  2. 显示电池电量的小工具
  3. oracle的asmcmd获取归档日志,分析oracle的联机日志和归档日志
  4. GTKmm 学习资料
  5. Qt的Xml操作QDomDocument
  6. 使用git新增分支以及初始化分支等等一些列操作实战
  7. 深井软岩巷道群支护技术与应用_金能煤业公司组织观看千米深井软岩巷道大变形机理及围岩控制技术讲座...
  8. python脚本第一行_python脚本第一行如何写
  9. JSP实用教程(第三版 清华大学出版社)中遇到的问题和解释
  10. 微信小程序图片自适应屏幕大小真的有效
  11. Netlogo入门(二)
  12. 全新的服务器debian/ubuntu---校准时间、更新apt,设置ssh远程访问
  13. python——加解密hashlib/hmac/random/secrets/base64/pycrypto
  14. 解决Centos8自带Firefox实现播放声音与视频-Linux、VMware
  15. C#制作UDP协议可同时收发Winform窗体
  16. Windows 11 蓝牙耳机音质故障-解决方法
  17. 北京市门头沟区谷歌卫星地图下载
  18. Odoo14问题总结——模块视图不显示
  19. Linux中更新pycharm即删除旧的pycharm,装新的pycharm
  20. Android 序列化 ---- Parcelable原理分析

热门文章

  1. [带权并查集] Jzoj P1503 体育场
  2. Java数据结构(1)---顺序表
  3. pytorch---之pin_memory
  4. pandas 将DataFrame 转为txt文本,去除引号问题
  5. C++相对路径下新建文件夹
  6. 华为鸿蒙HarmonyOS,华为鸿蒙HarmonyOS-系统概述
  7. 理光打印机如何设置邮件服务器,技术员帮您win10系统网络共享理光打印机的设置方法的操作办法...
  8. java map 教程_Map和Set
  9. 二等水准数据平差_自编单次二等水准平差计算表
  10. php模板和框架,php模板和框架的区别的区别是什么