下载
第9章 AWK 介 绍
如果要格式化报文或从一个大的文本文件中抽取数据包,那么 a w k 可以完成这些任务。它
在文本浏览和数据的熟练使用上性能优异。
整体来说,a w k是所有s h e l l过滤工具中最难掌握的,不知道为什么,也许是其复杂的语法
或含义不明确的错误提示信息。在学习 a w k 语言过程中,就会慢慢掌握诸如 Bailing out 和
a w k : c m d . L i n e :等错误信息。可以说 a w k 是一种自解释的编程语言,之所以要在 s h e l l中使用a w k
是因为a w k 本身是学习的好例子,但结合 a w k与其他工具诸如g r e p和s e d,将会使s h e l l编程更加
容易。
本章没有讲述a w k的全部特性,也不涉及 a w k 的深层次编程,(这些可以在专门讲述 a w k 的
书籍中找到)。本章仅注重于讲述使用a w k执行行操作及怎样从文本文件和字符串中抽取信息。
本章内容有:
• 抽取域。
• 匹配正则表达式。
• 比较域。
• 向a w k 传递参数。
• 基本的a w k行操作和脚本。
本书几乎所有包含 a w k 命令的脚本都结合了 s e d 和g r e p,以从文本文件和字符串中抽取信
息。为获得所需信息,文本必须格式化,意即用域分隔符划分抽取域,分隔符可能是任意字
符,在以后讲述a w k 时再详细讨论。
a w k以发展这种语言的人 A h o . We n i n b e rg e r和K e r n i g h a m 命名。还有n a w k和g a w k ,它们扩
展了文本特性,但本章不予讨论。
a w k 语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息。 a w k 抽取信息
后,才能进行其他文本操作。完整的 a w k 脚本通常用来格式化文本文件中的信息。
9.1 调用awk
有三种方式调用a w k,第一种是命令行方式,如:
这里,c o m m a n d s 是真正的a w k 命令。本章将经常使用这种方法。
上面例子中,[ - F域分隔符]是可选的,因为 a w k 使用空格作为缺省的域分隔符,因此如果
要浏览域间有空格的文本,不必指定这个选项,但如果要浏览诸如 p a s s w d 文件,此文件各域
以冒号作为分隔符,则必须指明 - F 选项,如:
第二种方法是将所有 a w k 命令插入一个文件,并使 a w k 程序可执行,然后用 a w k命令解释
器作为脚本的首行,以便通过键入脚本名称来调用它。
第三种方式是将所有的a w k命令插入一个单独文件,然后调用: