计算机用户经常把大量的时间花费在简单, 机械化的数据处理工作中 — 改变数据格式, 验证数据的有效性, 搜索特定的数据项, 求和, 打印报表等。 这些工作完全可以自动化地完成, 但是如果每碰到一个这样的任务, 就用一门标准的编程语言 (比如 C 或 Pascal) 写一个专用的程序来解决它, 未免也太麻烦了。 Awk 是一门特殊的编程语言, 它非常适合处理上面提到的任务, 经常只需要一两行便可搞定。 一个 awk 程序由一系列的模式和动作组成, 这些模式与动作说明了在输入中搜索哪些数据, 以及当符合条件的数据被找到时, 应该执行什么操作。 Awk 在输入文件集合中搜索与模式相匹配的输入行, 当找到一个匹配行时, 便会执行对应的动作。 通过字符串, 数值, 字段, 变量和数组元素的比较操作, 再加上正则表达式, 利用这些组合, 一个模式可以用来选择输入行, 而动作可以对选中的行作任意的处理。 描述动作的语言看起来和 C 非常像, 但是它不需要声明, 并且字符串和数值都是内建的数据类型。 Awk 自动地扫描输入文件, 并把每一个输入行切分成字段。 因为许多工作都是自动完成的 — 包括输入, 字段分割, 存储管理, 初始化 — 所以和传统语言编写的程序相比, awk 程序简短得多。 Awk 最常用的用途就是前面提到的那些工作。 因为 awk 程序一般都很短, 所以人们经常这样使用它: 通过键盘在命令行中输入程序代码 (只有一两行), 执行, 然后把代码丢弃。 实际上, awk 是一个通用编程工具, 许多专用工具都可以用它来替代。 由于表达式和操作非常简便, 所以用 awk 构造大型程序的原型就显得非常方便: 先从简单的几行开始, 慢慢加以扩充, 测试不同的设计方案, 直到完成预期的目标。 因为程序比较简短, 所以很容易上手, 如果在开发的过程中想到了一个更好的方案, 修改起来 (甚至从头开始) 也没那么麻烦。 只要设计是正确的, 那么把 awk 程序翻译成其他语言也很方便。
本书的第一目标是告诉读者 awk 是什么, 以及如何高效地使用它。 第 一 章是一个快速入门教程, 读过几页之后, 读者应该就有了足够的知识开始写一些有用的 awk 程序。 这一章的例子非常简短, 它们都是 awk 的典型应用。 第 二 章对整个 awk 语言进行描述。 虽然这一章也包含了许多例子, 但是读起来就像手册一样枯燥, 所以在第一次阅读本章时, 快速浏览即可。 本书的剩下几章包含了相当丰富的例子, 这些例子主要用来展示 awk 的应用范围如何广泛, 以及如何高效地使用它。 其中一些示例比较常规, 另外一些虽然展示了某些编程思想, 但并没有非常实际的用途, 还有一小部分例子仅仅是因为它们比较有趣。 第 三 章的重点是检索, 转换, 归约和数据验证 — 这些任务本来就是当初开发 awk 的目标。 这一章还讨论了如何处理多行记录, 比如地址薄。 Awk 是管理小型个人数据库的优秀工具。 第 四 章讨论如何从数据库中生成报表, 以及如何为存储在多个文件中的数据构造一个简单的关系数据库系统和对应的查询语言。
Awk 处理文本就像其他语言处理数值一样方便, 所以它经常被应用在文本处理领域。 第 五 章讨论如何使用 awk 生成文本, 以及协助文档的准备工作。 这一章包含了一个索引生成程序, 本书的索引就是用它的增强版生成的。 第 六 章关于 “小语言”, 小语言指的是特定于某个领域的定制化语言。 使用 awk 编写翻译器非常方便, 因为它的基本操作支持大部分的词汇和表格管理工作。 这一章包含汇编程序, 绘图程序和几个计算器程序。 Awk 还可以用来演示算法。 因为用 awk 写程序不需要声明, 也不用担心内存管理, 所以它不仅具有伪代码的许多优点, 而且是可运行的。 第 七 讨论算法实验, 包括测试与性能评价。 算法包括几种排序算法, 最后以 Unix 程序 make 作为结束。 第 八 章介绍 awk 的历史。 除此之外, 如果程序比较慢, 或者条件比较苛刻, 这一章还提出了几点优化建议。 附录 A 总结了 awk 语言, 附录 B 是部分习题的参考答案。 读者应该从第 一 章开始阅读, 并尝试自己动手写程序。 快速浏览第 二 章, 重点关注汇总和表格, 不要陷入到细节当中。 然后根据自己的兴趣, 阅读后面的章节, 这些章节之间都是互相独立的, 所以不用在意阅读顺序.
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !