[转帖]Linux AWK工作原理

linux,awk,工作,原理 · 浏览次数 : 0

小编点评

**AWK 工作流程** AWK 工作流程可分为以下三个部分: 1. **开始块(BEGIN)** - 包含 `BEGIN` 和 `{}` 的代码段。 - 在程序启动的时候执行。 - 可用于初始化变量和其他操作。 2. **主体块(BODY)** - 包含 `/pattern/` 和 `{}` 的代码段。 - 对于每个输入的行,执行一次该块的命令。 - 可用于匹配模式和执行操作。 3. **结束块(END)** - 包含 `END` 和 `{}` 的代码段。 - 当程序结束时执行。 - 可用于输出最终结果。

正文

https://www.cnblogs.com/yeyuzhuanjia/p/13967513.html

 

本篇文章我们主要为大家介绍 AWK 是如何工作的。

AWK 工作流程可分为三个部分:
1.读输入文件之前执行的代码段(由BEGIN关键字标识)。
2.主循环执行输入文件的代码段。
3. 读输入文件之后的代码段(由END关键字标识)。
命令结构:
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

下面的流程图描述出了 AWK 的工作流程:

 

 

 

1、通过关键字 BEGIN 执行 BEGIN 块的内容,即 BEGIN 后花括号 {} 的内容。
2、完成 BEGIN 块的执行,开始执行body块。
3、读入有 \n 换行符分割的记录。
4、将记录按指定的域分隔符划分域,填充域,0()0则表示所有域(即一行内容),1 表示第一个域,$n 表示第 n 个域。
5、依次执行各 BODY 块,pattern 部分匹配该行内容成功后,才会执行 awk-commands 的内容。
6、循环读取并执行各行直到文件结束,完成body块执行。
7、开始 END 块执行,END 块可以输出最终结果。

(1)开始块(BEGIN)
开始块的语法格式如下:
BEGIN {awk-commands}
开始块就是在程序启动的时候执行的代码部分,并且它在整个过程中只执行一次。
一般情况下,我们可以在开始块中初始化一些变量。
BEGIN 是 AWK 的关键字,因此它必须是大写的。
注意:开始块部分是可选的,你的程序可以没有开始块部分。

(2)主体块(BODY)
主体部分的语法格式如下:
/pattern/ {awk-commands}
对于每一个输入的行都会执行一次主体部分的命令。
默认情况下,对于输入的每一行,AWK 都会执行命令。但是,我们可以将其限定在指定的模式中。
注意:在主体块部分没有关键字存在。

(3)结束块(END)
结束块的语法格式如下:
END {awk-commands}
结束块是在程序结束时执行的代码。 END 也是 AWK 的关键字,它也必须大写。 与开始块相似,结束块也是可选的。

实例
先创建一个名为 marks.txt 的文件。其中包括序列号、学生名字、课程名称与所得分数。
1) 张三 语文 80
2) 李四 数学 90
3) 王五 英语 87
接下来,我们将使用 AWK 脚本来显示输出文件中的内容,同时输出表头信息。
$ awk 'BEGIN{printf "序号\t名字\t课程\t分数\n"} {print}' marks.txt
执行以上命令,输出结果如下:
序号    名字    课程    分数
1) 张三 语文 80                 
2) 李四 数学 90                 
3) 王五 英语 87                 
程序开始执行时,AWK 在开始块中输出表头信息。在主体块中,AWK 每读入一行就将读入的内容输出至标准输出流中,一直到整个文件被全部读入为止。

 

本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/13967513.html

与[转帖]Linux AWK工作原理相似的内容:

[转帖]Linux AWK工作原理

https://www.cnblogs.com/yeyuzhuanjia/p/13967513.html 本篇文章我们主要为大家介绍 AWK 是如何工作的。 AWK 工作流程可分为三个部分:1.读输入文件之前执行的代码段(由BEGIN关键字标识)。2.主循环执行输入文件的代码段。3. 读输入文件之后

[转帖]Shell三剑客之awk

目录 awk简述awk的工作过程awk的工作原理awk的基本格式及其内置变量getline文本内容匹配过滤打印对字段进行处理打印条件判断打印awk的三元表达式与精准筛选用法awk的精准筛选:awk的分隔符用法指定输出的分隔符awk结合数组运用面试题 awk简述 在 Linux/UNIX 系统中,aw

[转帖]Linux下AWK、SED、GREP、FIND命令详解

https://www.jianshu.com/p/d54e0359db01 AWK AWK是一个优良的文本处理工具,Linux和Unix环境中现有的功能最强大的数据处理引擎之一。 语法 awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f sc

[转帖]Linux系统awk命令详解

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 实际上 AWK 的确拥有自己的语言: AWK程序设计语言,三位

[转帖]linux awk数据列, 存入shell数组

awk 赋值给 shell 变量的方法 result='week(now(),-1) 49';var=`echo $result|awk '{print substr($result,16,3)}'`;echo $var;SYSFILE_NAME=`echo "$CONTROL_FILE" | aw

[转帖]Linux中awk命令正确的求最大值、最小值、平均值、总和

`https://blog.csdn.net/fireblue1990/article/details/51622416` test.txt文件内容: 9 11 35 21 42 118 求最大值: awk 'BEGIN {max = 0} {if ($1+0 > max+0) max=$1} EN

[转帖]【Linux学习】awk内置函数详细介绍(实例)

https://www.cnblogs.com/gtea/p/12668736.html 这节详细介绍awk内置函数,主要分以下3种类似:算数函数、字符串函数、其它一般函数、时间函数 一、算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x )

[转帖]Linux文本处理三剑客之awk学习笔记05:getline用法详解

https://www.cnblogs.com/alongdidi/archive/2021/01/19/awkGetline.html getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据。我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个

[转帖]Linux文本处理三剑客之awk学习笔记05:getline用法详解

https://www.cnblogs.com/alongdidi/p/awkGetline.html getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据。我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个非待处理文件的数据,或者从某个读取

[转帖]Linux-文本处理三剑客awk详解+企业真实案例(变量、正则、条件判断、循环、数组、分析日志)

https://developer.aliyun.com/article/885607?spm=a2c6h.24874632.expert-profile.313.7c46cfe9h5DxWK 简介: 文本处理 awk 1.awk简介 awk是一种编程语言,用于在Linux/unix下对文本和数据进