关键词:
老男孩linux培训第三节课程课前第考试三题,问题如下:
注:摘自老男孩老师博客
3.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)。
解答:
说明:此题解答方法已经给大家讲解了不下15种,还可以有很多,在这里给大家着重讲下awk的技巧用法,希望大家能多重视老师的思路、思维过程,不过过分关注问题的答案,以便达到学一通十的效果。
方法一【此法为绿叶】:如果用awk来处理的话,一般的同学可能会用下面的办法实现:
[[email protected] ~]# ifconfig eth0|grep ‘inet addr‘|awk -F ":" ‘{print $2}‘|awk ‘{print $1}‘
10.0.0.162
小结:这个方法是常规方法,很好。但是我们有没有更简单的awk实现方法呢?往下看。
方法二【此法为小红花】:通过awk同时使用多个分隔符来实现:
[[email protected] ~]# ifconfig eth0|grep ‘inet addr‘|awk -F ‘[ :]‘ ‘{print $13}‘
192.168.1.186
提示:本题通过使用空格或冒号来做分隔符,然后一次性取出结果,就是空格或冒号可以看做是同一个分隔符。
小结:这个方法很方便吧,同学们可以多用,选取包含IP地址行的特殊关键字‘inet addr’过滤然后,使用awk以空格和:同时做分隔符,然后取出需要的内容。
本答案的最大缺点就是计算$n的时候很费劲,因为inet前面有多个空格,查到$13,真是不容易,如此看来从实现时间上可能还不如第一个方法快呢?那好引出我们今天的关键答案案例。
方法三【大红花出场】:通过awk同时使用多个分隔符,然后通过正则匹配多个分隔符的方法来实现:
[[email protected] ~]# ifconfig eth0 |awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘
10.0.0.185
我们来说明下这个简单易用的好办法:
提示:本题NR是行号,分隔符+号匹配,[]里一个或多个任意一个分隔符,这里就是匹配一个或多个冒号或空格。
1)awk -F 后面跟分隔符‘[空格:]+’,其中[空格:]多分隔符写法,意思是以空格或冒号做分隔,后面的"+"号是正则表达式,意思是匹配前面空格或冒号,两者之一的1个或1个以上。
2)NR==2和sed -n "2p",相当,意思都是选择第几行,例:
[[email protected] ~]# 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)掌握了理论要去实践验证才是科学严谨的学习态度,好,来几个例子实践说话吧。
[[email protected] ~]# echo ---1:----2|awk -F ‘[-:]+‘ ‘{print $2}‘
1
[[email protected] ~]# echo ---1:----2|awk -F ‘[-:]+‘ ‘{print $3}‘
2
[[email protected] ~]# echo ---1:::::2|awk -F ‘[-:]+‘ ‘{print $3}‘
2
最后把我的这些年的运维感悟送给大家:
老男孩语录⑧⑧-把简单的技术学到极致就是高手
工作中多用简单的技术,实现较复杂的架构,这样不但能减少维护成本,还减少出故障问题的几率,
同时降低修复故障所花费的时间,更避免流失处理的人无人接替维护的尴尬局面发生。
运维工作中:简单、易用,是使用命令,选择软件和解决方案的基本原则,不是越复杂越好。
本文出自 “老男孩linux培训” 博客,转载请与作者联系!
本文出自 “蓝叶子Sheep” 博客,请务必保留此出处http://dellinger.blog.51cto.com/12445009/1908755
新awk整理
总感觉上一篇awk的总结几乎是照着man翻译过来的,惨不忍睹无意间在互联网上有找到了宝贵的资料感觉整理的很好,想着照着这个来重新写下,对照新的man更新下吧,只是总是在改变的一、awk简介二、awk工作流程三、awk程序结构... 查看详情
awk(代码片段)
目录:.awk的记录,字段与内置变量.awk的内置函数.awk的变量.运算与判断.awk的流程控制.awk中的自定义函数.awk高级输入输出.awk与shellscript混合编程附录Column1Column2Column3TextTextText一.awk功能特点awk是一个非常重要的命令或者认为是一... 查看详情
awk教程
Awk教程一、awk简介awk是一种解释执行的编程语言,专门用来处理文本数据的。二、awk工作流程:Awk内部工作原理;AWK执行的流程非常简单:读(Read)、执行(Execute)与重复(Repeat);下面是流程图:Awk工作流程图读(Read)... 查看详情
awk语法
awk的用法awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息 调用awk有三种方式调用awk,第一种是命令行方式,如: awk–F:‘commands’input-files 第二种方法是将所有awk命令插入... 查看详情
awk知识库
awk极客课程《AWK编程语言》1《AWK编程语言》2《AWK程序设计语言》https://github.com/wuzhouhui/awk 查看详情
awk
一awk简介(1)awk--version(查看awk版本号)(2)awk取数据快(3)awk‘print$1’ yunjisuan.txt(不加-F全输出print是输出&1是选项)-F指定awk按照什么标志进行文件的内容切割,切割成一列一列的(4)如果我们不指定-F参数,awk默认按... 查看详情
管道sed | awk 或 awk | sed
】管道sed|awk或awk|sed【英文标题】:pipingsed|awkorawk|sed【发布时间】:2017-04-2302:54:16【问题描述】:我绝对可以被视为sed/awk新手。我一直在努力做一个多步过滤器,但没有成功。每个部分单独运行时都会产生结果,但是当我将它... 查看详情
sed和awk之awk篇
(原创文章,谢绝转载~)awk是处理文本的另一利器,也是对文本逐行处理。awk的基本syntax是:awk‘pattern{action}‘inputfile#examplesawk‘/regex/{print$0}‘inputfile在awk中用$1,$2,$3....表示每行的第1,2,3....列,而$0表示整行数据另有内置变量... 查看详情
awk执行过程模式数组
作者:Georgekai归档:学习笔记2018/1/12本章正题:awk执行过程、模式、数组1.1 awk1.awk:全称就是gawk2.查看awk版本:awk--version3.awk'找谁{干啥}' 找谁:模式pattern 干啥:动作action1.1.1 awk执行过程 1.2 awk... 查看详情
shell编程之awk(数据筛选与处理)(代码片段)
shell编程之awk(数据筛选与处理)awk命令介绍awk语法awk的基本应用awk对字段(列)的提取awk对记录(行)的提取awk程序的优先级awk高级应用-F命令选项awk定义变量(-v命令)awk定义数组awk运算awk比较... 查看详情
awk笔记
awk基本用法基本用法:awk[options]‘program’var=valuefile…awk[options]-fprogramfilevar=valuefile…awk[options]‘BEGINaction;…patternaction;…ENDaction;…‘file...awk程序通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块,共3部分组成pr 查看详情
awk命令
1.awk命令awk的设计使得他非常适合处理由行列组成的文本数据。awk还是一种编程语言环境,他提供了正则表达式的匹配,流程控制,运算符,表达式,变量,以及函数等一系列的程序设计语言所具备的特性。2.awk命令的基本语法aw... 查看详情
awk的使用
参考技术AAWK语法:awk-F/f/v/+‘pattern’+文件全路径或者:标准输出|awk-F/f/v/+‘pattern’参数含义:-F指定域的分隔符,如默冒号“:”写法有三个1.awk-F:‘pattern’文件全路径2.awk-F“:”‘pattern’文件全路径3.awk-F’[:,\t]’‘pattern’文... 查看详情
awk编程
2017年1月10日,星期二awk编程awk: awk是一个强大的文本分析工具, 相对于grep的查找,sed的编辑, awk在其对数据分析并生成报告时,显得尤为强大。 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分... 查看详情
awk从放弃到入门:awk基础
一、awk简介 awk其名称得自于它的创始人AlfredAho、PeterWeinberger和BrianKernighan姓氏的首个字母。实际上AWK的确拥有自己的语言:AWK程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短... 查看详情
awk精解
下面介绍的是三种文本处理工具之一-----------------awk文本处理三剑客为grep、sed(流编辑器)、awk(报告生成器)。awk来源于贝尔实验室的三个人,三个字母分别提取自名字。1、awk基础(1)awk命令简介 格式:awk[options]‘program... 查看详情
awk简介
AWK简介AWK是文本处理三剑客的重要工具之一:文本处理三工具分别是:grep,sed,awk,具有如下特点:grep,egrep,fgrep:文本过滤工具依据patternsed:行编辑器(模式空间,保持空间)awk:报告生成器,格式化文本输出AWK基本用法 基本... 查看详情
使用 awk 替换 `'` 字符
】使用awk替换`\\\'`字符【英文标题】:replacingthe`\'`charusingawk使用awk替换`\'`字符【发布时间】:2011-09-2503:16:09【问题描述】:我想删除其中包含单个:和\'的行。我想为此使用awk。我试过使用:awk\'gsub("[:\\\\\']","");print$0\'和awk\'gsub("... 查看详情