awk 程序设计模型
理解awk提供给程序员的基本模型是很重要的。学习awk比学习其他程序设计语言更容易的部分原因,是由于awk为程序员提供了定义得当且有用的模型。
awk 程序是由所谓的主输入(main input) 循环组成的。一个循环是一个例程,它将一直重复执行直到有一些存在的条件终止它。你不必写这个循环,他是现成的,它作为一个框架存在,在这个框架中你编写的代码能够执行。你所编写的处理操作的代码假设有一个可用的输入行。在其他的程序设计语言中,你必须建立一个主输入循环并将它作为程序的一个组成部分。它必须打开一个输入文件并一次读入一行。在其他的程序设计语言中,你必须建立一个主输入循环并将它作为程序的一个组成部分。它必须打开一个输入文件并一次读入一行。它说明了基本的awk简化操作可以使得编程更容易。
主输入循环执行的次数和输入的行数相同。就像在"Hello,World." 例子中所看到的,这种循环仅当有一个输入时才执行。当没有其他输入行读入是循环将终止。
$ awk 'BEGIN {print "Hello, world"}'
Hello, world
awk允许你编写两个特殊的例程,他们在任何输入被读取前和所有输入都被读取后执行。他们是与BEGIN和END规则相关的过程。换句话说,在主输入循环执行前和主输入循环后你可以做一些处理。BEGIN和END过程是可选的。
你可以把awk脚本看做由3个主要部分组成:处理输入前将做的处理,处理输入过程中将做的处理,处理输入完成后做的处理。对于这3个组成部分,主输入循环或称为"处理过程中将做的处理"是主要的处理部分。在主输入循环中,指令被写成一系列的模式/动作过程。模式是用于测试输入行的规则,以确定动作是否将应用于这些输入行。我们将看到的操作可能很复杂,它由语句、函数和表达式组成。
要记住的主要事情是每个模式/操作过程位于主输入循环中个,且负责读取输入行。所编写的过程将应用于每个输入行,而且一次一行。
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------