- 1
- 0
- 约9.58千字
- 约 9页
- 2021-11-08 发布于陕西
- 举报
为什么我特别喜欢Awk 赖明星
为什么我特别喜欢Awk vert; 赖明星
Awk是由Aho、Weinberger和Kernighan三位科学家开发的,特别擅长文本处理的linux 工具,该工具是 linux 下最常用的工具之一。Awk不是普通的工具,其实,也是一种编程语言,在编程语言排行榜上也能排上号的。
Google 的一位工程师(他的博客最近访问不了)写了一篇文章,介绍Awk,标题为《Why you should learn just a little awk》,该文章简单的介绍了Awk 的用法,在Reddit 和 Ycombinator 上引起了热烈讨论。好玩的是,文章的最后作者还留下邮箱,大意是如果你是那种对awk感兴趣的人,毫无疑问,你就是那种我希望可以在Google共事的人,如果你感兴趣,可以给我简历(ggrothau@),我可以确保它一定会出现在合适的招聘者面前,而不是遗落在我们每天收到的那一大堆简历中。
我一直关注的一个博客,博主去ATT实验室实习,总结的文章里有提到,ATT里的科学家和工程师每天都在Awk/sed/grep 和管道中折腾。如果现在要让我选择最喜欢的编程语言的话,我会选择Awk ,Awk 不但简单易学,功能强大,而且能够通过管道与Shell脚本很好的交互,这是其他编程语言所不能及的。当然了,我们要用合适的工具和合适的语言做合适的事情,Awk并不是万能的,它的强项就是文本处理以及与Shell 脚本的交互。
我猜想我喜欢Awk 的另一个原因是它的语法与C 语言很像,相对于Python 和其他语言,Awk更符合我的思维方式。Awk和C语言很像,但是省去了初始化,内存分配,严格的语法等烦人的细节。这里还不得不提的是,Awk 三位创始人之一 Kernighan 就是《The C Programming Language》的第一作者,它的语法与C 语言相像也就不足为奇了吧。
2.1 Awk 程序的结构
下面根据我的理解简单介绍下Awk 的语法,然后摘录一些小例子演示Awk 的用法,再通过几个程序,演示Awk 的强大之处,最后,给大家推荐本参考书吧。
Awk 程序的结构如下:
awk BEGIN{ print start } pattern { commands } END{ print end } file
Awk程序由3部分组成:BEGIN语句块,END语句块,和能够使用模式(正则表达式/关系表达式)匹配的通用语句,这三部分中的任何一部分都可以省略,BEGIN语句块在程序最开始执行,通常完成一些初始化的工作,END语句块在程序的最后执行,通常在最后格式化输出结果。模式部分的工作原理如下:首先获取一行,检查该行是否与提供的样式匹配,如果匹配就执行与该样式对应的{}中的语句。
简单来说,就是首先执行BEGIN 语句块(如果有的话),然后逐行检查file 中的数据是否满足pattern, 如果满足,就执行{}中的语句,如果不满足,就什么也不做,在程序的最后执行END语句块(如果有的话)。
也可以通过管道获取数据,如下所示:
cat file | awk BEGIN{ print start } pattern { commands } END{ print end } 2.2 Hello,world
下面我们来看一下在Awk 中如何打印Hello,world , 在上面已经提到过,Awk程序由三部分组成(BEGIN语句块,pattern ,END语句块),三部分中的任何一部分都可以省略,最简单的方法打印Hello,world 如下:
只有BEGIN 语句块
echo | awk BEGIN{ print Hello, world}
只有END 语句块
echo | awk END{ print Hello, world}
只有pattern 部分
echo | awk { print Hello, world}
在pattern 部分,因为pattern 为空,只有{}语句块,所以,程序认为每一行数据满足模式,都执行{}语句块中的内容。
2.3 深入理解三个语句块
再次强调:Awk 在程序执行之前执行BEGIN语句块,然后读入一行数据,检查该行数据是否满足模式,如果满足,则执行该模式对应的{}语句块里的内容,再次读入下一行数据,进行第二次模式检查,直到读完所有的数据,在程序的最后,执行END语句块中的语句。一个标准的Awk 程序如下:
seq 5 | awk BEGIN{ print begin} $1 2 { p
您可能关注的文档
最近下载
- 临沂科技职业学院历年真题.pdf
- 摄像机的基本操作及使用技巧(SONY—PMW EX280).doc VIP
- 2025-2026学年人教版八年级英语下册教学计划含进度表.docx VIP
- 《浙江省施工现场建筑垃圾减量化导则》.docx VIP
- 中级会计 第七版 测试习题与答案 -Intermediate Accounting by J.David Spiceland,7th Edition+test bank+Text solution.pdf VIP
- 征信报告模板-带水印版.docx VIP
- 2022年一级造价师《建设工程造价案例分析》(水利)考试题库-下.pdf VIP
- 索尼EX280摄像机使用说明书.pdf
- 员工劳动合同管理制度.docx VIP
- 西湖龙井茶适制品种选育技术规程.pdf VIP
原创力文档

文档评论(0)