当前位置: 首页 > 文档资料 > Awk 中文教程 >

工作流程( Workflow)

优质
小牛编辑
123浏览
2023-12-01

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

AWK工作流程

Read

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

执行 (Execute)

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

Repeat

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

计划结构

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

BEGIN块

BEGIN块的语法如下 -

Syntax

BEGIN {awk-commands}

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

身体块

主体块的语法如下 -

Syntax

/pattern/ {awk-commands}

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

结束块

END块的语法如下 -

Syntax

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脚本显示带有标题的文件内容。

Example

[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt

执行此代码时,会产生以下结果 -

Output

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