awk使用说明 Tarena High-End IT Training 达内科技公司培训资料.ppt
《awk使用说明 Tarena High-End IT Training 达内科技公司培训资料.ppt》由会员分享,可在线阅读,更多相关《awk使用说明 Tarena High-End IT Training 达内科技公司培训资料.ppt(61页珍藏版)》请在三一办公上搜索。
1、awk使用说明,2010年12月,awk说明,awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些扩展。,awk工作原理,awk的处理文本和数据的方式是这样的,它逐行扫描
2、文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。,awk的语法格式,awk pattern filename awk action filename awk pattern action filename,例子,数据来自命令只有动作 ls|awk print只有模式 ls|awk/./数据来自文件只有动作 awk print/etc/devices只有模式 awk/./etc/devices,模式pattern,模式可以是以下任意一个:/正则表达式/:使用
3、通配符的扩展集。关系表达式:可以用下面运算符表中的关系运算符进行操作,可以是字符串或数字的比较,如$2%1选择第二个字段比第一个字段长的行。模式匹配表达式:用运算符(匹配)和!(不匹配)等。模式,模式:指定一个行的范围。该语法不能包括BEGIN和END模式。BEGIN:让用户指定在第一条输入记录被处理之前所发生的动作,通常可在这里设置全局变量。END:让用户在最后一条输入记录被读取之后发生的动作。,/正则表达式/,正则表达式以/开始/结束c 非元字符c 转义字符(元字符,比如w就表示单词字符).匹配任意字符 匹配字符串开始$匹配字符串结尾abc.匹配abc.中意义一个字符abc.匹配除abc.
4、中之外的任意一个字符r1|r2 要么r1,要么r2r1r2 连接r1与r2r+匹配一个或多个rr*匹配0个或多个rr?匹配0个或者1个r(r)分组:匹配r,rnr重复n次rn,r重复至少n次rn,mr重复至少n次,最多m次y匹配一个单词开始与结尾的空字符串,其实就是匹配一个以y后字符串开始与结束的单词B匹配一个单词中的空字符串,其实就是匹配包含有B后字符串的单词匹配单词结束的空字符串,其实就是以后字符串结束的单词w匹配单词字符(字母,数字,下划线).W匹配非单词字符匹配缓冲字符串开始位置的空字符串 匹配缓冲字符串结束位置的空字符串,正则表达式举例,gawk/.at/test匹配三个字符,其中后
5、两个是at gawk/th/test以th开头的行 gawk/at$/test以at结尾的行 gawk/thait/test包含that或者thit的行 gawk/thait/test包含th开始的t结尾的中间一个字符不是ai的行,gawk/this|that/test包含this或者that的行 gawk/e+/test包含至少一个e的行 gawk/e*/test包含e与不包含e的行 gawk/thise?/test包含thise与this的行 gawk/thi(se)?/test包含thi与thise的行,gawk/thi(se)1/test包含thise的行gawk/thi(se)1,/
6、test包含thise,thisese,的行gawk/thi(se)1,3/test包含thise,thisese,thisesese的行gawk/thy/test有以th结尾单词的行gawk/yth/test有以th开始的行,gawk“/Bhi/test有单词中包含hi的行,在开头或者结尾不算gawk“/whi/test有单词包含字符hi,并且单词中只能包含字母数字与_的行gawk“/Whi/test有单词包含字符hi,并且单词中可以包含其他字符的行gawk“/test有单词以wo结尾的行,字符类,:alnum:字母数组字符.:alpha:字母字符.:blank:空格与tab字符.:cntr
7、l:控制字符.:digit:数字字符.:graph:可打印且可见字符.(空格是可打印的,但不可见.):lower:小写字符.:print:可打印字符(非控制字符.):punct:标点字符(非字母,数字,控制,或空格的字符).:space:空字符(空格,tab,格式制表字符).:upper:大写字母字符.,字符类举例,gawk“/:digit:w/”test 有单词以一个数字开始,并且只能包含字母数字与_的行,关系表达式,关系表达式匹配那些结果为真的行。关系运算符号=!=匹配正则表达式!不匹配正则表达式关系表达式中有可以使用变量,awk的环境变量,基本概念:记录与域,记录awk把每一个以换行符结
8、束的行称为一个记录。记录分隔符:默认的输入和输出的分隔符都是回车,保存在内建变量ORS和RS中。$0变量:它指的是整条记录。如$awk print$0 test将输出test文件中的所有记录。变量NR:一个计数器,每处理完一条记录,NR的值就增加1。如$awk print NR,$0 test将输出test文件中所有记录,并在记录前显示记录号。,域记录中每个单词称做“域”,默认情况下以空格或tab分隔。awk可跟踪域的个数,并在内建变量NF中保存该值。如$awk print$1,$3 test将打印test文件中第一和第三个以空格分开的列(域)。,域分隔符内建变量FS保存输入域分隔符的值,默认
9、是空格或tab。我们可以通过-F命令行选项修改FS的值。如$awk-F:print$1,$5 test将打印以冒号为分隔符的第一,第五列的内容。可以同时使用多个域分隔符,这时应该把分隔符写成放到方括号中。如$awk-F:t print$1,$3 test,表示以空格、冒号和tab作为分隔符。输出域的分隔符默认是一个空格,保存在OFS中。如$awk-F:print$1,$5 test,$1和$5间的逗号就是OFS的值。,关系表达式举例,gawk-F:$3=74/etc/passwd返回/etc/passwd中第三字段为74的行gawk-F:$1/louis/etc/passwd返回第一字段满足模
10、式/louis/的行,模式运算,pattern&pattern逻辑且pattern|pattern逻辑或pattern?pattern:pattern三目运算(pattern)优先级别!Pattern逻辑否pattern1,pattern2模式范围:返回pattern1与pattern2之间所有行,模式运算举例,gawk-F:/gdm/,/louis/etc/passwd返回匹配/gdm/到匹配/louis/之间的所有行gawk-F:/gdm/|/louis/etc/passwd返回匹配/gdm/或者/louis/的行gawk-F:/gdm/&/louis/etc/passwd返回既匹配/gd
11、m/有匹配/louis/的行gawk-F:!/gdm/etc/passwd返回不匹配/gdm/的行gawk-F:!(/gdm/|/louis/)/etc/passwd返回不匹配/gdm/与/louis/的行gawk-F:2030?/gdm/:/louis/etc/passwd2030为真则匹配/gdm/,否则匹配/louis/,BEGIN模块,BEGIN模块后紧跟着动作块,这个动作块在awk处理任何输入文件之前执行。所以它可以在没有任何输入的情况下进行测试。它通常用来改变内建变量的值,如OFS,RS和FS等,以及打印标题。语法格式:BEGIN语句1;语句n每个语句之间使用;分号分隔如:$awk
12、 BEGINFS=“:”;OFS=“t”;ORS=“nn”print$1,$2,$3 test。上式表示,在处理输入文件以前,域分隔符(FS)被设为冒号,输出文件分隔符(OFS)被设置为制表符,输出记录分隔符(ORS)被设置为两个换行符。$awk BEGINprint TITLE TEST只打印标题。,END模块,END不匹配任何的输入文件,但是执行动作块中的所有动作,它在整个输入文件处理完成后被执行。如$awk ENDprint The number of records is NR test,上式将打印所有被处理的记录数。gawk BEGINFS=:;print=print$1ENDpri
13、nt*/etc/passwdBEGIN与END本质还是动作,动作action,作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内。主要有四部份:变量或数组赋值输出命令内置函数控制流命令,变量或数组赋值,变量定义:变量名=值在awk中,变量不需要定义就可以直接使用,变量类型可以是数字或字符串。例子:gawk a=1;print a$2/etc/passwdgawk BEGINa=1print a+$0/etc/passwdgawk BEGINa=1a+=2;print a$0/etc/passwd,awk可以在命令行中给变量赋值,然后将这个变量传输给awk脚本。在awk
14、脚本中,这些变量使用起来就象是在脚本中建立的一样。如$awk-F:-f awkscript month=4 year=2004 test上式的month和year都是自定义变量,分别被赋值为4和2004。注意:如果参数前面出现test,那么在BEGIN语句中的变量就不能被使用。域变量也可被赋值和修改如$awk$2=100+$1;print test,上式表示,如果第二个域不存在,awk将计算表达式100加$1的值,并将其赋值给$2,如果第二个域存在,则用表达式的值覆盖$2原来的值。如:$awk$1=root$1=test;print test如果第一个域的值是“root”,则把它赋值为“tes
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- awk使用说明 Tarena High-End IT Training 达内科技公司培训资料 awk 使用说明 High End 科技 公司 培训资料
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2230028.html