Unix awk的流程控制BEGIN和END的讲解

系统 其他OS
在Unix awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。

你可能对Unix比较熟悉,但你可能对Unix awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。

流程控制语句是任何程序设计语言都不能缺少的部分。任何好的语言都有一些执行流程控制的语句。Unix awk提供的完备的流程控制语句类似于C语言,这给我们编程带来了极大的方便。

BEGIN和END:

在Unix awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。

任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。

例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段):
$awk
'BEGIN { FS=":";print "统计销售金额";total=0}
{print $3;total=total+$3;}
END {printf "销售金额总计:%.2f",total}' sx

(注:>是shell提供的第二提示符,如要在shell程序Unix awk语句和Unix awk语言中换行,则需在行尾加反斜杠)

在这里,BEGIN预置了内部变量FS(字段分隔符)和自定义变量total,同时在扫描之前显示出输出行头。而END则在扫描完成后打印出总合计。

【编辑推荐】

  1. 关于Unix系统线路图的简单介绍
  2. Unix系统的心脏Unix文件系统
  3. 总结关于Unix系统相关的经验教训
  4. 对Unix系统发展期和现况的了解
  5. 学习Unix系统知识的一些经验之谈
责任编辑:小霞
相关推荐

2010-05-11 12:53:58

Unix awk

2016-08-10 11:19:11

awkLinux开源

2016-08-29 20:51:16

awkLinux开源

2009-12-15 09:56:51

Ruby流程控制

2010-05-11 10:43:10

Unix awk

2010-05-11 13:33:22

Unix awk

2010-07-23 13:23:10

Perl语言

2010-07-23 13:46:27

Perl语言

2017-05-31 17:09:52

LinuxShell命令

2015-07-23 15:17:37

JavaScript循环语句

2021-05-27 09:30:51

Java流程控制

2010-03-18 16:37:13

Python 程序流程

2011-09-08 13:53:31

Node.js

2022-07-27 08:31:28

SQL开发控制

2010-04-30 16:08:20

Unix内核

2009-12-25 09:50:14

Linux的Shell编程Shell程序设计

2010-05-11 11:29:11

Unix awk

2010-04-30 14:26:27

Unix FreeBS

2010-07-19 10:11:58

Perl流程控制语句

2010-05-11 11:34:44

点赞
收藏

51CTO技术栈公众号