AWK - 工作流程

要成为专业的AWK程序员,您需要了解其内部结构. AWK遵循简单的工作流程并减去;读,执行和重复.下图描绘了AWK : 的工作流程;

AWK Workflow

读取

AWK从输入流(文件,管道或标准输入)读取一行并将其存储在内存中.

执行

所有AWK命令都按顺序应用于输入.默认情况下,AWK在每一行执行命令.我们可以通过提供模式来限制它.

重复

此过程重复直到文件结束.

程序结构

现在让我们了解AWK的程序结构.

BEGIN块

BEGIN块的语法如下 :

语法

 BEGIN {awk-commands}

BEGIN块在程序启动时执行.它只执行一次.这是初始化变量的好地方. BEGIN是一个AWK关键字,因此它必须是大写的.请注意,此块是可选的.

正文块

正文块的语法如下 :

语法

/pattern/{awk-commands}

主体块在每个输入行上应用AWK命令.默认情况下,AWK在每一行上执行命令.我们可以通过提供模式来限制它.请注意,Body块没有关键字.

END Block

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命令,该命令只打印标准输出流上的内容.重复此过程直到文件结束.