要成为专业的AWK程序员,您需要了解其内部结构. AWK遵循简单的工作流程并减去;读,执行和重复.下图描绘了AWK : 的工作流程;
AWK从输入流(文件,管道或标准输入)读取一行并将其存储在内存中.
所有AWK命令都按顺序应用于输入.默认情况下,AWK在每一行执行命令.我们可以通过提供模式来限制它.
此过程重复直到文件结束.
现在让我们了解AWK的程序结构.
BEGIN块的语法如下 :
语法
BEGIN {awk-commands}
BEGIN块在程序启动时执行.它只执行一次.这是初始化变量的好地方. BEGIN是一个AWK关键字,因此它必须是大写的.请注意,此块是可选的.
正文块的语法如下 :
语法
/pattern/{awk-commands}
主体块在每个输入行上应用AWK命令.默认情况下,AWK在每一行上执行命令.我们可以通过提供模式来限制它.请注意,Body块没有关键字.
END块的语法如下 :
语法
END {awk-commands}
END块在程序结束时执行. END是一个AWK关键字,因此它必须是大写的.请注意,此块是可选的.
让我们创建一个文件 marks.txt ,其中包含序列号,学生姓名,科目名称和编号获得的分数.
1) Amit Physics 80 2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
现在让我们使用AWK脚本显示带有标题的文件内容.
示例
[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt
执行此代码时,会产生以下结果 :
输出
Sr No Name Sub Marks 1) Amit Physics 80 2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
一开始,AWK打印出来来自BEGIN块的标题.然后在body块中,它从文件中读取一行并执行AWK的print命令,该命令只打印标准输出流上的内容.重复此过程直到文件结束.