精通awk系列(5):BEGIN和END语句块
2024-09-01 05:51:24
回到:
BEGIN和END语句块
awk的所有代码(目前这么认为)都是写在语句块中的。
例如:
awk '{print $0}' a.txt
awk '{print $0}{print $0;print $0}' a.txt
每个语句块前面可以有pattern,所以格式为:
pattern1{statement1}pattern2{statement3;statement4;...}
语句块可分为3类:BEGIN语句块、END语句块和main语句块。其中BEGIN语句块和END语句块都是的格式分别为BEGIN{...}
和END{...}
,而main语句块是一种统称,它的pattern部分没有固定格式,也可以省略,main代码块是在读取文件的每一行的时候都执行的代码块。
分析下面三个awk命令的执行结果:
awk 'BEGIN{print "我在前面"}{print $0}' a.txt
awk 'END{print "我在后面"}{print $0}' a.txt
awk 'BEGIN{print "我在前面"}{print $0}END{print "我在后面"}' a.txt
根据上面3行命令的执行结果,可总结出如下有关于BEGIN、END和main代码块的特性:
BEGIN代码块:
- 在读取文件之前执行,且执行一次
- 在BEGIN代码块中,无法使用
$0
或其它一些特殊变量
main代码块:
- 读取文件时循环执行,(默认情况)每读取一行,就执行一次main代码块
- main代码块可有多个
END代码块:
- 在读取文件完成之后执行,且执行一次
- 有END代码块,必有要读取的数据(可以是标准输入)
- END代码块中可以使用
$0
等一些特殊变量,只不过这些特殊变量保存的是最后一轮awk循环的数据
最新文章
- CNN车型分类总结
- Ruby中Block, Proc, 和Lambda
- 干货分享:IBM StorwizeV7000部署与运维
- Qt 5.4 OpenCV 2.4.11 Win 32 Configuration
- HGE游戏引擎之实战篇,渐变的游戏开场
- 3 Ways of JDK Source Code Attachment in Eclipse---reference
- js的一个稍微高级点的用法
- Linux基本操作 1-----命令行BASH的基本操作
- js之with
- JS 中 原生方法 (一) --- 字符串
- ECMA Script 6_symbol(symbol.iterator) 新接口_iterator接口
- Chapter 4 Invitations——2
- 我个人对OOP的理解
- Linux yum仓库配置
- css3新增功能
- PL/SQL编程1-基础
- 工具类之Mutex
- resultMap的使用
- JAVA中 this关键字的用法
- 设计模式:访问者(Visitor)模式
热门文章
- 2019-2020-4 20199317《Linux内核原理与分析》第四周作业
- 记录我的 python 学习历程-Day02-while 循环/格式化输出/运算符/编码的初识
- WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
- luogu P1908 逆序对 |树状数组
- IOS之文件夹创建、删除,图片在本地的保存和加载
- 学习go语言第二天-变量、常量
- linux运维中经常使用的目录和文件讲解
- F5负载均衡架构
- THREE.js 笔记
- docker-compose部署