你也许仍然会问,我为什么要使用Unix awk?使用Unix awk的第一个理由是基于文本的样式扫描和处理是我们经常做的工作,awk所做的工作有些象数据库,但与数据库不同的是,它处理的是文本文件,这些文件没有专门的存储格式,普通的人们就能编辑、阅读、理解和处理它们。
而数据库文件往往具有特殊的存储格式,这使得它们必须用数据库处理程序来处理它们。
既然这种类似于数据库的处理工作我们经常会遇到,我们就应当找到处理它们的简便易行的方法,Unix有很多这方面的工具,例如sed 、grep、sort以及find等等,Unix awk是其中十分优秀的一种。
使用Unix awk的第二个理由是awk是一个简单的工具,当然这是相对于其强大的功能来说的。的确,Unix有许多优秀的工具,例如Unix天然的开发工具C语言及其延续C++就非常的优秀。
但相对于它们来说,Unix awk完成同样的功能要方便和简捷得多。这首先是因为awk提供了适应多种需要的解决方案:从解决简单问题的awk命令行到复杂而精巧的awk程序设计语言,这样做的好处是,你可以不必用复杂的方法去解决本来很简单的问题。
例如,你可以用一个命令行解决简单的问题,而C不行,即使一个再简单的程序,C语言也必须经过编写、编译的全过程。其次,awk本身是解释执行的,这就使得Unix awk程序不必经过编译的过程,同时,这也使得它与shell script程序能够很好的契合。
最后,Unix awk本身较C语言简单,虽然awk吸收了C语言很多优秀的成分,熟悉C语言会对学习awk有很大的帮助,但awk本身不须要会使用C语言――一种功能强大但需要大量时间学习才能掌握其技巧的开发工具。
使用Unix awk的第三个理由是awk是一个容易获得的工具。与C和C++语言不同,awk只有一个文件(/bin/awk),而且几乎每个版本的Unix都提供各自版本的awk,你完全不必费心去想如何获得awk。
但C语言却不是这样,虽然C语言是Unix天然的开发工具,但这个开发工具却是单独发行的,换言之,你必须为你的Unix版本的C语言开发工具单独付费(当然使用D版者除外),获得并安装它,然后你才可以使用它。
基于以上理由,再加上Unix awk强大的功能,我们有理由说,如果你要处理与文本样式扫描相关的工作,awk应该是你的第一选择。在这里有一个可遵循的一般原则:如果你用普通的shell工具或shell script有困难的话,试试Unix awk,如果awk仍不能解决问题,则便用C语言,如果C语言仍然失败,则移至C++。
【编辑推荐】