AWK 工作流程
要成为一名熟练的AWK程序员,你需要了解它的内部工作原理。AWK遵循简单的工作流程-读取、执行和重复。以下图表展示了AWK的工作流程-
阅读
AWK从输入流(文件、管道或标准输入)中读取一行,并将其存储在内存中。
执行
所有AWK命令按顺序应用于输入。默认情况下,AWK在每一行上执行命令。通过提供模式,我们可以限制执行。
重复
此过程重复,直到文件达到其末尾。
程序结构
现在让我们了解AWK的程序结构。
BEGIN块
BEGIN块的语法如下 –
语法
BEGIN {awk-commands}
BEGIN块在程序启动时执行。它只执行一次。这是初始化变量的好地方。BEGIN是AWK的关键字,因此必须是大写的。请注意,这个块是可选的。
主体块
主体块的语法如下:
语法
/pattern/ {awk-commands}
body块对每一行输入应用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的打印命令,仅将内容打印在标准输出流上。这个过程重复直到文件到达末尾。