AWK-工作流程


要成为 AWK 程序员专家,您需要了解其内部结构。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 块中的标头。然后在主体块中,它从文件中读取一行并执行 AWK 的打印命令,该命令仅在标准输出流上打印内容。重复此过程直到文件到达末尾。