awk脚本基本格式
awk 'begin{ commands } pattern{ commands } end{ commands }' file
// 一个awk脚本通常由begin,通用语句块,end语句块组成,三部分都是可选的。
// 脚本通常是被单引号或双引号包住。
awk 'begin{ i=0 } { i } end{ print i }' filename
awk "begin{ i=0 } { i } end{ print i }" filename
awk执行过程分析
第一步: 执行begin { commands } pattern 语句块中的语句
- begin语句块:在awk开始从输入输出流中读取行之前执行,在begin语句块中执行如变量初始化,打印输出表头等操作。
第二步:从文件或标准输入中读取一行,然后执行pattern{ commands }语句块。它逐行扫描文件,从第一行到最后一行重复这个过程,直到全部文件都被读取完毕。
- pattern语句块:pattern语句块中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{ print },即打印每一个读取到的行。{ }类似一个循环体,会对文件中的每一行进行迭代,通常将变量初始化语句放在begin语句块中,将打印结果等语句放在end语句块中。
第三步:当读至输入流末尾时,执行end { command }语句块
- end语句块:在awk从输入流中读取完所有的行之后即被执行,比如打印所有行的分析结果这类信息汇总都是在end语句块中完成,它也是一个可选语句块。