BEGIN与END关键字

BEGIN与END关键字

Content #

BEGIN关键字允许指定一段脚本,在处理数据之前执行。 END关键字允许指定一段脚本,gawk会在处理完数据后执行这段脚本。可以将各个部分放到一起,组成一个漂亮的小型脚本文件,用它从一个简单的数据文件中创建一份完整的报告:

$ cat script4.gawk
BEGIN {
print "The latest list of users and shells"
print "UserID  \t Shell"
print "------- \t -------"
FS=":"
}

{
print $1 "       \t "  $7
}

END {
print "This concludes the listing"
}
$

其中,BEGIN脚本用于为报告创建标题。另外还定义了一个殊变量FS。这是定义字段分隔符的另一种方法。这样就无须依靠脚本用户通过命令行选项定义字段分隔符了。

下面是这个gawk脚本的输出(有部分删节):

$ gawk -f script4.gawk /etc/passwd
The latest list of users and shells
UserID           Shell
--------         -------
root             /bin/bash
daemon           /usr/sbin/nologin
[...]
christine        /bin/bash
sshd             /usr/sbin/nologin
This concludes the listing
$

和预想的一样,BEGIN脚本创建了标题,主体脚本处理了特定数据文件(/etc/passwd)中的信息,END脚本生成了页脚。print命令中的\t负责生成美观的选项卡式输出(tabbed output)。

From #

Linux命令行与shell脚本编程大全