📜  AWK-工作流程

📅  最后修改于: 2020-11-05 03:48:18             🧑  作者: Mango


要成为专业的AWK程序员,您需要了解其内部。 AWK遵循简单的工作流程-读取,执行和重复。下图描述了AWK的工作流程-

AWK工作流程

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

执行

所有AWK命令都顺序施加在输入上。默认情况下,AWK在每一行执行命令。我们可以通过提供模式来限制它。

重复

重复此过程,直到文件结束。

程序结构

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

BEGIN块

BEGIN块的语法如下-

句法

BEGIN {awk-commands}

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

车身挡块

主体块的语法如下-

句法

/pattern/ {awk-commands}

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

END块

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块打印标题。然后,在主体块中,它从文件中读取一行并执行AWK的print命令,该命令仅将内容打印在标准输出流上。重复此过程,直到文件结束。