资源描述:
《【免费】awk_手册【中文】new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、awk手册http://linuxfire.com.cn/~lily/awk.htmlawk手册简体中文版由bones7456(bones7456@gmail.com)整理.原文:应该是http://phi.sinica.edu.tw/aspac/reports/94/94011/但是原文很乱.说明:之前也是对awk几乎一无所知,无意中看到这篇文章,网上一搜,居然没有像样的简体中文版.有的也是不怎么完整,或者错误一大堆的.于是就顺手整理了下这篇文章.通过整理这篇文章,自己也渐渐掌握了awk的种种用法.原文可能
2、比较老,有些目前已经不适用的命令有所改动,文中所有命令均在ubuntu7.04下调试通过,用的awk是mawk.由于本人能力有限,错误和不妥之处在所难免,欢迎多多指正.1.前言有关本手册:这是一本awk学习指引,其重点着重于:lawk适于解决哪些问题?lawk常见的解题模式为何?为使读者快速掌握awk解题的模式及特性,本手册系由一些较具代表性的范例及其题解所构成;各范例由浅入深,彼此间相互连贯,范例中并对所使用的awk语法及指令辅以必要的说明.有关awk的指令,函数,...等条列式的说明则收录于附录中,以利
3、读者往后撰写程序时查阅.如此编排,可让读者在短时间内顺畅地学会使用awk来解决问题.建议读者循着范例上机实习,以加深学习效果.读者宜先具备下列背景:[a.]UNIX环境下的简单操作及基本概念.例如:文件编辑,文件复制及管道,输入/输出重定向等概念[b.]C语言的基本语法及流程控制指令.(awk指令并不多,且其中之大部分与C语言中之用法一致,本手册中对该类指令之语法及特性不再加以繁冗的说明,读者若欲深究,可自行翻阅相关的C语言书籍)2.awk概述为什么使用awkawk是一种程序语言.它具有一般程序语言常见的功
4、能.因awk语言具有某些特点,如:使用直译器(Interpreter)不需先行编译;变量无类型之分(Typeless),可使用文字当数组的下标(AssociativeArray)...等特色.因此,使用awk撰写程序比起使用其它语言更简洁便利且节省时间.awk还具有一些内建功能,使得awk擅于处理具数据行(Record),字段(Field)型态的资料;此外,awk内建有pipe的功能,可将处理中的数据传送给外部的Shell命令加以处理,再将Shell命令处理后的数据传回awk程序,这个特点也使得awk程序很
5、容易使用系统资源.由于awk具有上述特色,在问题处理的过程中,可轻易使用awk来撰写一些小工具;这些小工具并非用来解决整个大问题,它们只扮演解决个别问题过程的某些角色,可藉由Shell所提供的pipe将数据按需要传送给不同的小工具进行处理,以解决整个大问题.这种解题方式,使得这些小工具可因不同需求而被重复组合及重用(reuse);也可藉此方式来先行测试大程序原型的可行性与正确性,将来若需要较高的执行速度时再用C语言来改写.这是awk最常被应用之处.若能常常如此处理问题,读者可以以更高的角度来思考抽象的问题,
6、而不会被拘泥于细节的部份.1of4503/18/201004:07PMawk手册http://linuxfire.com.cn/~lily/awk.html本手册为awk入门的学习指引,其内容将先强调如何撰写awk程序,未列入进一步解题方式的应用实例,这部分将留待UNIX进阶手册中再行讨论.如何取得awk一般的UNIX操作系统,本身即附有awk.不同的UNIX操作系统所附的awk其版本亦不尽相同.若读者所使用的系统上未附有awk,可透过anonymousftp到下列地方取得:phi.sinica.edu.tw
7、:/pub/gnuftp.edu.tw:/UNIX/gnuprep.ai.mit.edu:/pub/gnuawk如何工作为便于解释awk程序架构,及有关术语(terminology),先以一个员工薪资档(emp.dat),来加以介绍.A125Jenny100210A341Dan110215P158Max130209P148John125220A123Linda95210文件中各字段依次为员工ID,姓名,薪资率,及实际工时.ID中的第一码为部门识别码."A","P"分别表示"组装"及"包装"部门.本小节着重于
8、说明awk程序的主要架构及工作原理,并对一些重要的名词辅以必要的解释.由这部分内容,读者可体会出awk语言的主要精神及awk与其它语程序言的差异处.为便于说明,以条列方式说明于后.名词定义l数据行:awk从数据文件上读取数据的基本单位.以上列文件emp.dat为例,awk读入的第一笔数据行是"A125Jenny100210"第二笔数据行是"A341Dan110215"一般而言,一个数据行就相当于数据文件上的一行资