开发工具:
文件大小: 2mb
下载次数: 0
上传时间: 2019-03-02
详细说明:Linux最强三剑客 sed grep awk 写的很不错,值得收藏。20192/19
不看绝对后悔的Lnux二剑客之aw实战精讲-飞得更高-51CTO博客
mail x mail var spool mail sbin nologin
uucp x uucp var spool uucp sbin nologin
思路
让所有单词排成一列,这样每个单词都是单独的一行
1)设置RS值为空格
2)将文件里面的所有空格替换为回奂行符n
3)grep所有连续的字母,grep-0参数让他们排成一列。
z= tChen2ai1#日2】↑ak'BE{=”1+"】{xnt}!anz2x|uaq-|ax
1上ah
2d世
3 Tai
322t
3 shusen
3
3 mucH
5上t
521c24B
12=1
1.6字段与记录小结
现在你应该会对awk的记录字段有所」解」,下面我们总结一下,学会给阶段知识总结是学好运维的必备技能
·Rs记录分隔符,表示每行的结束标志
NR行号(记录号)
FS字段分隔符,每列的分隔标志或结束标志
·NF就是每行有多少列,每个记录中字段的数量
符号表示取某个列(字段),s192HE
NF表示记录中的区域(列)数量,sN取最后一个列(区域。)
FS(-F)字段(列)分隔符,干(FS)“:"<=> BEGINFS=:}
·Rs记录分隔符(行的结束标识)
送图书
NR行号
选好合适的刀FS()Rs,OFs,ORs
分隔符=>结束标识
记录与区域,你就对我们所谓的行与列,有了新的认识(RS,FS)
第2章aWk进阶
2.1awk模式与动作
接下来就详细介绍下,awk的模式都有几种
正则表达式作为模式
·比较表达式作为模式
范围模式
特殊模式BEGN和END
awk的模式是你玩好awk的必备也是最基础的内容,必须熟练掌握
2.2正则表达式作为模式
awk同sed一样也可以通过模式匹配来对输入的文本进行匹配处。说到模式匹配,肯定少不了正则表达式,aWk也支持大量的正则表
达式模式,大部分与sed支寺的元字符类似,而且正则表达式是玩转三剑客的必各工具,下表列出了awk支持的正则表达式元字符:
awk默认就支持的元字符
在线
元字
客服
示例
Achensiqi或s3-/c匹配所有以 chensiq评头的字符串;匹配出所有第三列
^字符串开头
hensiqi/
中以 chensiqi开头的
字符串结尾
chensiq$3~(h匹配所有以 chensiqis结尾的字符串;匹配第三列中以ch
ensigns/
ensI结尾的
点)些配任意但个字符(包括
/c. I/
回车符)
匹配字母c,然后两个任意字符,再以塔尾的行
http://blog.51cto.com/hujiangtao/1923930
3/15
20192/19
不看绝对后悔的LnuⅨ二剑客之aw实战精讲-飞得更高-51CTO博客
元字
符功
示例
解释
重复0个或多个前一个字
/a*cool/
符
匹配0个或多个a之后紧跟着coo的行
重复前一个字符一次或多
匹配一个或多个a加上字符串b的行
次
匹配0个或一个前边的字
/a?b/
符
匹配以字母a或b或c开头的行
比指定字符组内的任一
Mabey
匹配以字母a或b或c开头的行
匹配不在指定字符组内的
任一字符
MAabcy
匹配不以字母a或b或c开头的行
0子表达式组合
/(chensiqi)+/
表示一个或多个c0合,当有一些字符需要组合时,
使用括号括起来
或者的意思
(chencici:,
匹配 shensi或字母B的行
awk默认不支持的元字符:(参数-posi)
元字符功能
示例
解释
x(m}凉字符重复m次
/co5}匹配字符5次
xm}x字符重复至少m次
(coo(2y匹配coo整体,至少2次
xmnx字符重复至少m次,但不超过次/co056匹配oo整体,至少5次,最多6次
提示
加括号代表整体匹配,不加那么就匹配前边的一个字符。awk默认不支持这种形式的正则,需要加-posx
参数或者-e- nterval
·正则表达式的运用,默认是在行内查找匹配的字符串,若有匹配则执行 action操作,但是有时候仅需要固
定的列来匹配指定的正则表达式,比如:我想取/ etc/passwd文件中第五列{S5一列查找匹配ma字符串
的行,这样就需要用另外两个匹配操作符,并且awk里面只有这两个操作符来匹配正则表达式。
2.2.1awk正则匹配操作符
送图书
awk正则匹配操作符:
~|用于对记录或区域的表达式进行匹配
l|用于表达与~相反的意思
下面还是通过具体示例米看看,awk如何米通过正则表达式匹配字符串的
2.2.2awki则表达式匹配整行
[rootachensiqil files]# awk -F:"'/root/'awkfile txt root: x: 0: 0: root: /root: /bin/ bash
和下面的效果是一样的
[rootachensiqgil files]# awk -F:"SOw/root/ awkfile txt root: x: 0: 0: root: /root: /bin/bash
提示:
awk只用正则表达式的时候是默认匹配鍪行的即$0~/^root/和/^root/是一样的
2.23awk正则表达式匹配一行中的某一列
[rootdchensiqil tiles awk -F: " $5/shutdown/ awkfile txt shutdown: x: 6: 0: shutdown: / sbin: /sbin/shutdow
提示
$5表示第五个区域(列)
表示匹配(正则表达式匹配)
/ shutdown表示匹配 shutdow这个字符串
合并在一起
在线
客服
5~/ shutdown/表示第五个区域(列匹配正则表达式/ shutdown/,既第5列包含 shutdown这个字符串,则显示这一行
2.24某个区域中的开头和结尾
知道」妇何仗用正则表达式匹配操作符之后,我们来看看aWk正则与grep和sed个同的地方。
awk正则表达式
^|匹配一个字符串的开头
$|匹配一个字符串的结尾
http://blog.51cto.com/hujiangtao/1923930
4/15
20192/19
不看绝对后悔的Lnu剑客之aw实战精讲-飞得更高-51CTO博客
Sed和grep这两个命令中,我们都把它们当作行的开头和结尾。但是在awk中他表示的是字符串的开头和结尾
接下来我们通过练习题来联系aWk如何使用正则表达式。
2.25创建测试环境
[roc-echenaigil t cat >>/server/f-Lea/reg.txt<=大于或等于x>=y
大于
以上运算符是针对数字的,下面两个运算符之前已有示例,对字符串
与正则表达式匹配x~y
与正则表达式不匹配x-y
2.3.1企业面试题:取出文件/etc/ services的23-30行
思路:
想表示一个范围,一个行的范围,就要用到NR这个内置变量了,同时也妻用到比较表达式
[rootGwww -]y awk 'NR>-2366NR<-30./etc/services
rootwww # a
NR>& 3/e
⊥Uce5
1)比较表达式比较常用的还是表示大于等于,小于等于或者等于,根据这个例子来学习即可
2)NR表示行号,大丁等于23即,NR>=23小丁等于30,即NR<-30
3)合起来就是NR>=23并且NR<=30,8&表示并且,同时成立的意思。
4)换一种表达式方法就是大于22行小于31行,即NR>2288NR<31
2.3.2如果判断某一列是否等于某个字符呢?
示例:找出/etc/ passwd中第土列是root的行
送图书
测试文件
x囗tgw~]cat/ server/Eiea/awk=qa1.七xt
oct:H:0: 0:root: /roct:/bin oaah
root: x: 0: 0: rootroot/ roct:oin 'bash
cot:x: 0: d: roatrooot rcot:bin/bash
root: x: 0: 0:rotrooot:/root:/bin/Cash
root: x: 0: 0:/rcot: /bin/bash
答
auk -FI,mm
zt"/B会v!51÷/BMEe址aLtz
awk -F:550/roota//server/=iles/awk equal.txt
2.4范围模式
pattern1 pattern2
从哪里来到哪里去
条件1
条件2
·范围模式简单理解就是从哪里来,到哪里去。
匹配从条件1开始到条件2介绍的范围
1)还记得sed使用地址范围来处理文本內容嘛?awk的沌围模式,与sed类似,但是又有不
在线
司,awk不能直接使用行号来作为范围起始地址,因为awk具有内置变量NR来存储记录号,
客服
所有需要使用NR=1NR=5这样来使用
2)范围模式处理的原则是:先匹配从第一个模式的首次出现到第二个模式的首次出现之间
的內容,执行 action。然后匹配从第一个模式的下一次出现到第二个模式的下一次出现,直
到文本结束。如果匹配到第一个模式而没有匹配到第二个模式,则awk处理从第一个模式开
始直到文本结束全部的行。如果第—个模式不匹配,就算第二个模式匹配。awk依旧不处理
任何行。
http://blog.51cto.com/hujiangtao/1923930
8/15
20192/19
不看绝对后悔的LnuⅨ二剑客之aw实战精讲-飞得更高-51CTO博客
awk '/start pos/,/ end pos/print $)) passwd chensiq1
awk ' /start pos/, Nr==XXXiprint $0 passwd chensiqi
范围模式的时候,范围条件的付候,表达式必须能匹配一行。
tw"M1:!w:"==2,13==5{=≌i2=1,}1=2n,tz
2ini"上ins1"nc1gir
3 daemon x daemon shin sbin nolcg-n
auin x dull vcr uin yin uulugit1
5 Ir x lp vay sp201 Ipc sbin login
条件是:从第二行,到第五行
动作是:显小行号(NR)和整行($0
合来就是显示第二行到第五行的行好和整行的内容
frootwww fil=s]+ awI: /bin/, IR=5( print NR, 90] awkfile txt
2 bin: x: 1: 1: bin:,bir:/scin/noIogLT
4 aom:x3:4:a-
aar:/30In/nclogin
s Ip:x:4: 7:lp:/var/=p001/Ipi:sbir/nslcgin
说明:
条件是:从以bin开头的行,到第五行
动作是:显示行号和整行内容
合起来就是显示从以bin尸头的行,到第五行中的行号和整行内容
[route files awk -:s5/bin/,"lp/Erin. NR, s0 awkfiletxt
2b1::1:1:bm:/D⊥n;/ab⊥n/1g1
3 daemon:x: 212: daemon: /shin:/sbin/mologin
4 80m:*: 3:4:adm:/varyadr:/hin/nologin
a n:x:4: 7:p: vE/ aron/nd:/shi n/noemi n
现明
条件;从第五列以b开头的行到以p开的行
的:显小打号和正航容
送图书
合起米:从第三列以b开始的行到D开义的行并显示行号和整行内容
[soot11e14aMk-F:"薛5-/“b:n/,毒5m/“1p/【 arint N,0}awk1e,tt
2 bin:x: 1: 1: bin: / bin:/sbi/nolouin
3 daemon: x:2: 2: daemon:/sbir:/sbin nolog-n
4 amm:x: 1:4: anm:/wa/anm:/snim/mo: omn
5 Ip:x4: 7:n:/var/sroolrIpd: /ahin/ nologtn
条件:从第三列以bn开头字符串的行到第二列以开头字符牛的行
动作:显示行号和整行
2.5awk特殊模式- BEGIN模式与END模式
·BEGN模块再awk读取文件之前就执行,一般用来定义我们的内置变量(预定义变量,eg:FS,RS),可以
输出表头(类似exce俵表格名称)
BEGN模式之前我们有在示例中提到,自定义变量,给内容变量赋值等,都使用过。需要注意的是BEG
N模式后面要接跟一个 action操作块,包含在大括号内。awk必须在输入文件进行任何处理前先执行BEGl
N里的动作( action)。我们可以不要任何输入文件,就可以对BEGN模块讲行测试,因为awk需要先执
行完BEGN模式,才对翰入文件做处理。BEGN模式常常被用来修改内置变量ORS,RS,FS,OFS等
值
2.5.1 BEGIN模块
1)第一个作用,内置变量的定
在线
客服
示例:取eth0的IP地址
http://blog.51cto.com/hujiangtao/1923930
9/15
20192/19
不看绝对后悔的 Linux二剑客之aw实战精讲-飞得更高-51CTO博客
treated4日】= cnEg eth。laMk-""(adx;)1(器aE:}””==2prm1
1:.1:7.133
[rootgiww fileal* ifconfig etho I awk -F"[:1+""NRmm2-rinr s4
132.15217.133
[root sw Efle9= ffccnfdy ethdI ank -E[0-9.:+"WHEs2Print 523
192.168.197.133
神的也可以成
4 BEGINE3-"{;》1#)"】-21》}
1z.168.197,133
[reedsmaN1e1·±fan1g
I awk'EECINt=S="t ::"332-m20petnt e4]"
121.17133
==taww五l=2l曹inqh。lank"EaME【-2.】+"]-2(xnF2}
2)第二个作用,在读取文件之前,输出些提小性信息(表头)。
[reetiwH :11291= avk
订工4这就是比的表头信思
IE
SYnc J
要在第一行输出一些 username和UD,我们应该想到BEGN这个特殊的条件(模式),为BEGN}在aWk读取文件之前执行
以结果是 bEGIN(print" username","UI"),江意prnt命令生由双引号吃啥吐啥,原样输出
然后我们实现了在输出文件内容之前输出" username"和UD",下步输出文件的第列和第三列即 (print s1,s3)
最后结果就是 BEGIN Print" username","UID"|2rins1,53
3)第二个作用,使用 BEGIN模块的特殊性质,进行一些测试
irw:e8]简单输出内容
[Eoot ewww =]. awk 'BEGI[print hello world!")
hEllo world
x3w!e3]*希进行计算
【 rosEN 1e81awk'BGTI【 prInt10/3
[ronr eww fileR]s awk 'RFGTWInrint. 10/3+1)
433333
送图书
x。M1想5] awk ' BEGIN[print10/3+/4+9}
.55335
[rooceww11es]和帝有关的作
[rootm files+ ak 'BEGIN[a=l: b-z: print a, by
【是wMw1Les】 au EEG【a=1;b=2: rint a,b,s+b
123
2.52awk中变量的概念简介
·直接定义,直接使用即可
awk中字母会被认为是变量,如果真的要给一个变量赋值字母(字符串),请使用双引号
〓公th1e3aMk"EEI{a=akc2na;"
[rootecheraigi files awk 'BEGIN aicc=123455 a=abcd; print all
123456
△二che:8111号3#Ewk"BEI{a="Bbca":Px1nta]
abc-
说明
没有文件aWk依旧可以处理 BEGIN模式下的动作(命令)
2.5.3END模块
EHD在awk读取完所有的文件的时候,再执行END莫,一般用来输出一个结果(累川,数组结果),也可以是和 BEGIN模块癸似的
结尾标识信息
在线
rGhn#l特】+wk【”“he2%4!”】Bmt,4朝En”m4=e” F ceant,r
客服
h在125里16!
11△富△5t122t上B出
2 tin I bin bin biz rlogin
二e2axe二31n1naaa13
4甚出ada1n101n
5 Ie x o ver cool Ipd sein taloga
4=xmc=t上ir=
T shreder x anadem sb:: sb.r shtoom
Pt割5T
e bail x nail war arcol rail =tin 1c02a
与B三GN模式相对应的END模式:格式一栏,但是END模式仅在aWk理完所有输入行后才进行处理
http://blog.51cto.com/hujiangtao/1923930
10/15
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.