Linux基础知识 ·

Linux文本三剑客之awk工作流程

AWK 是一个优良的文本处理工具,Linux 及 Unix 环境中现有的功能最强大的数据处理引擎之一。它的名字来源于它的三位作者的姓氏:Alfred Aho, Peter Weinberger 和 Brian Kernighan。

这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。awk 经过改进生成的新的版本 nawk、gawk,现在默认 linux 系统下日常使用的是 gawk。GNU/Linux发布的 awk 目前由自由软件基金会(FSF)进行开发和维护,通常也称它为 GNU AWK,也就是gawk.

AWK 的工作流程

AWK 执行的流程非常简单:读( Read )、执 行( Execute )与重复( Repeat )。下面的流程图描述出了 AWK 的工作流程:

读(Read)

AWK 从输入流(文件、管道或者标准输入)中读入一行然后将其存入内存中。

执行(Execute)

对于每一行输入,所有的 AWK 命令按顺执行。 默认情况下,AWK 命令是针对于每一行输入,但是我们可以将其限制在指定的模式中。

重复(Repeate)

一直重复上述两个过程直到文件结束。

AWK 程序结构

awk 程序通常由: BEGIN语句块、能够使用模式匹配的通用语句块、 END语句块,共3部分组成 。

开始块(BEGIN block)

BEGIN语句块的语法

BEGIN {awk-commands}

BEGIN语句块在程序开始的使用执行,它只执行一次,在这里可以初始化变量。BEGIN是AWK的关键字,因此它必须为大写,注意,这个语句块是可选的。

主体块(Body Block)

BODY语句块的语法

/pattern/ {awk-commands}

BODY语句块中的命令会对输入的每一行执行,我们也可以通过提供模式来控制这种行为。注意,BODY语句块没有关键字。

结束块(END Block)

END语句块的语法

END {awk-commands}

END语句块在程序的最后执行,END是AWK的关键字,因此必须为大写,它也是可选的。


示例:

让我们创建一个包含序号,学生姓名,科目名称和得分的文件 marks.txt。

接下来,我们将使用 AWK 脚本来显示输出文件中的内容,同时输出表头信息。

程序启动时,AWK 在开始块中输出表头信息。在主体块中,AWK 每读入一行就将读入的内容输出至标准输出流中,一直到整个文件被全部读入为止。

参与评论