awk的BEGIN和END

转载 2014年02月25日 21:01:59

你可能对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则在扫描完成后打印出总合计。

hadoop datanode重启出现namenode的clusterID和datanode的不一致。

日志报出的错误是这样的: 016-05-10 15:14:05,620 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initiali...

storm的特性与使用场景

Storm的一些关键特性 适用场景广泛: storm可以实时处理消息和更新DB,对一个数据量进行持续的查 询并返回客户端(持续计算),对一个耗资源的查询作实时并行化的处理(分布式 方法调用,即D...

shell之awk的编程结构--BEGIN/END/重定向/管道

1.BEGIN模块:这个模块包括了一个操作块(也就是"{ }"内的内容)。该操作块是在文件输入之前执行的,也就是不需要输入任何文件数据,也能执行该模块。           BEGIN模块常用于设置...
  • Anny71
  • Anny71
  • 2016年07月26日 16:06
  • 86

让你提前认识软件开发(31):数据库脚本中的begin与end

第2部分 数据库SQL语言数据库脚本中的begin与end         在数据库脚本中,begin与end是一对奇怪的单词。缺少它们,某些代码看起来会让人一头雾水;添加它们,代码的结构瞬间就清晰了...
  • zhouzxi
  • zhouzxi
  • 2014年06月25日 21:01
  • 1742

Contiki系统关于PROCESS_CONTEXT_BEGIN与PROCESS_CONTEXT_END见解

Contiki系统关于PROCESS_CONTEXT_BEGIN与PROCESS_CONTEXT_END见解在阅读socket源码时有PROCESS_CONTEXT_BEGIN与PROCESS_CON...

SpriteBatch详解——SpriteBatch.Begin 和 SpriteBatch.End

公共方法 Name    Description

__BEGIN__; __END__是opencv中的一种错误处理机制,它可以防止非法的内存释放,以及内存泄露

http://shijuanfeng.blogbus.com/logs/205062662.html __BEGIN__; __END__是opencv中的一种错误处理机制,它可以防止非...

Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现

虽然之前写了不少Oracle上的SQL语句,但是没有抽出时间对Oracle进行一个系统的学习,实践固然重要,但没有一个理论上的规范学习与理解,在实践中就不能举一反三,就不能写出高规范高质量的SQL语句...
  • liuyiy
  • liuyiy
  • 2014年04月18日 13:28
  • 432

mysql语句之begin end 多重嵌套

语法: [begin_label:] BEGIN [statement_list] END [end_label]   说明:   测试: DELIMITER $$ DROP P...

BEGIN_MESSAGE_MAP 和END_MESSAGE_MAP() 这两个宏的具体实现与作用 (转)

           mfccommandclass框架null BEGIN_MESSAGE_MAP和END_MESSAGE_MAP 首先看定义 #define BEGIN_ME...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:awk的BEGIN和END
举报原因:
原因补充:

(最多只允许输入30个字)