资源描述
姓名:李强强QQ:447096447微博:LAMP兄弟连_强强邮箱:awk编程的使用编程的使用本章目标1.awk1.awk编程的作用编程的作用2.awk2.awk的模式的模式3.awk3.awk的动作的动作4.awk4.awk的运算符的运算符5.awk5.awk的内建函数的内建函数6.awk6.awk的内建变量的内建变量7.awk7.awk与正则的配合使用与正则的配合使用awk编程语言的特点1.使用直译器(Interpreter)不需先行编译2.变量无类型之分(Typeless)3.可使用文字当数组的下标(AssociativeArray)4.awk撰写程序比起使用其它语言更简洁便利且节省时间5.awk还具有一些内建变量和函数6.awk擅于处理具数据行(Record),字段(Field)型态的资料7.awk内建有pipe的功能,可以传送到shell进行加工处理8.awk的数据行数据行:awk从数据文件上读取数据的基本单位.以上列文件emp.dat为例,awk读入的第一笔数据行是A125Jenny100210第二笔数据行是A341Dan110215一般而言,一个数据行就相当于数据文件上的一行资料awk的数据列字段(Field):为数据行上被分隔开的子字符串.以数据行A125Jenny100210为例,第一栏第二栏第三栏第四栏A125Jenny100210一般是以空格符来分隔相邻的字段.awk程序的主要结构awk程序的主要结构程序的主要结构:awk程序中主要语法是PatternActions,故常见之awk程序其型态如下:Pattern1Actions1Pattern2Actions2.Pattern3Actions3pattern是什么?awk可接受许多不同型态的Pattern.一般常使用关系表达式(Relationalexpression)来当成Pattern.例如:x34是一个Pattern,判断变量x与34是否存在大于的关系.x=y是一个Pattern,判断变量x与变量y是否存在等于的关系.上式中x34,x=y便是典型的Pattern.awk提供C语言中常见的关系运算符(RelationalOperators)如,=,=,data.rptprint$1,$2*$3|sort-k1data.rptENDclose(data.rpt)close(sort-k1data.rpt)printThereare,NR,recordsprocessed.awk中system的使用该指令用以执行Shell上的command.范例:DataFile=invent.rptsystem(rmDataFile)说明:(a)system(字符串)指令接受一个字符串当成Shell的命令.上例中,使用一个字串常数rm连接(concate)一个变量DataFile形成要求Shell执行的命令.Shell实际执行的命令为rminvent.rptawk中pipe的使用|配合awk输出指令,可把output到stdout的资料继续转送给Shell上的某一命令当成input的资料.|配合awkgetline指令,可呼叫Shell执行某一命令,再以awk的getline指令将该命令的所产生的资料读进awk程序中.范例:print$1,$2*$3|sort-k1resultdate|getlineDate_dataawk的内建函数index(原字串原字串,找寻的子字串找寻的子字串)length(字串字串)match(原字串原字串,用以找寻比对的正则表达式用以找寻比对的正则表达式)split(原字串原字串,数组名称数组名称,分隔字符分隔字符)sprintf(格式字符串格式字符串,项项1,项项2,.)sub(比对用的正则表达式比对用的正则表达式,将替換的新字串将替換的新字串,原字串原字串)gsub(比对用的正则表达式比对用的正则表达式,将替換的新字串将替換的新字串,原字串原字串)substr(字串字串,起始位置起始位置,长度长度)awk的数学函数int(x):返回返回x的整数部分的整数部分sqrt(x):返回返回x的平方根的平方根exp(x):将返回将返回e的的x次方次方log(x):将返回将返回x以以e为底的对数值为底的对数值sin(x):x 须以弧度为单位须以弧度为单位,sin(x)将返回将返回x的的sin函数值函数值.cos(x):x 须以弧度为单位须以弧度为单位,cos(x)将返回将返回x的的cos函数值函数值 rand():返回介于返回介于 0与与1之间的随机数值之间的随机数值;0 rand()0)printsubstr(data,RSTART,RLENGTH)sub(/0-9+/,data)结果输出:12345661awk中数组的使用awk程序中允许使用字符串当做数组的下标(index).利用这个特色十分有助于资料统计工作.(使用字符串当下标的数组称为AssociativeArray)awk中数组的特性中数组的特性使用字符串当数组的下标(index).使用数组前不须宣告数组名及其大小awk数组举例首先建立一个数据文件,并取名为reg.dat.此为一学生注册的资料文件;第一栏为学生姓名,其后为该生所修课程catreg.datMaryO.S.Arch.DiscreteSteveD.S.AlgorithmArch.WangDiscreteGraphicsO.S.LisaGraphicsA.I.LilyDiscreteAlgorithm需求的实现范例:统计各科修课人数,并印出结果.建立如下程序,并取名为course.awk:for(i=2;i=NF;i+)Number$i+ENDfor(courseinNumber)printf(%10s%dn,course,Numbercourse)执行下列命令:$awk-fcourse.awkreg.dat执行结果如下:Graphics2O.S.2Discrete3A.I.1D.S.1Arch.2Algorithm2awk函数的使用awkBEGINarrival=HM_to_M($2,$3)ENDfunctionHM_to_M(hour,min)returnhour*60+min$*本章小结1.awk1.awk编程的作用编程的作用2.awk2.awk的的patternpattern3.awk3.awk的的actionaction4.awk4.awk的的BEGINBEGIN5.awk5.awk的的ENDEND6.awk6.awk的内建变量和内建函数的使用的内建变量和内建函数的使用7.awk7.awk中数组和自定义函数的使用中数组和自定义函数的使用课后练习1.查看系统中与用户有关的三个文件(1)/etc/passwd(2)/etc/group(3)/etc/shadow2.把/etc/shadow中的与/etc/passwd中相关的密码用awk自动替换到/etc/passwd中的第二列密码列中姓名:李强强QQ:447096447微博:LAMP兄弟连_强强邮箱:Thankyou!注:注:文档文档资料素材和料素材和资料部分料部分来自网来自网络,如不慎侵犯了您的,如不慎侵犯了您的权益,益,请联系系Q2653327170,我,我们将做将做删除除处理,感理,感谢您您的理解。的理解。332021/4/8
点击显示更多内容>>
收藏
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号