首先再说一说awk的工作流程还是有必要的 :
执行awk时, 它会反复进行下列四步骤.
1. 自动从指定的数据文件中读取一个数据行.
2. 自动更新(Update)相关的内建变量之值. 如 : NF, NR, $0...
3. 依次执行程序中所有 的 Pattern { Actions } 指令.
4. 当执行完程序中所有 Pattern { Actions } 时, 若数据文件中
还有未读取的数据, 则反复执行步骤1到步骤4.awk会自动重复进行上述4个步骤, 使用者不须于程序中编写这个循环(Loop).
1. 程序元素
一个awk 程序是一对以模式(pattern) 与大括号框起来的操作(action) 组合而成的,或许,还会加上实现操作细节的函数(function ) 。针对每个匹配于输人数据的模式,操作会被执行,且所有模式都会针对每条输人记录而检查。模式或操作可省略其中一个。如果模式省略,则操作将被应用到每条输人记录; 如果操作省略,则默认操作为打印匹配之记录在标准输出上。以下是传统awk 程序的配置:
pattern {action} 如模式匹配,则执行操作
pattern {action} 如模式匹配,则打印记录
虽然,模式多半是数字或字符串表达式,不过awk 以保留字BEGIN 与END 提供两种特殊模式。
与BEG 工N 关联的操作只会执行一次,在任何命令行文件或一般命令行赋值被处理之前,但是在任何开头的一V 选项指定已经完成之后。
END 操作也是只执行一次,用于所有输入数据已被处理完之后。它多半用于产生摘要报告,或是执行清除操作。
BEGIN 与END 模式可以是任意顺序,可以存在于awk 程序内的任何位置。不过,为了方便,我们