ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AWK命令

2022-08-01 17:33:53  阅读:151  来源: 互联网

标签:BEGIN END commands 命令 awk AWK 执行


AWK工作流程分3个部分:

1.读输入文件之前执行的代码段(又BEGIN关键字标识)

2.主循环执行输入文件的代码段

3.读输入文件之后的代码段(由END关键字标识)

命令结构:

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

AWK工作流程:

BEGIN块:开始语句,用来预处理或打印表头等,可选

BODY块:读取一行数据(循环读取)主处理块,逐行读取数据并匹配处理,可选

END块:结束语句,可用来生成报告等,可选。

1、通过关键字BEGIN执行BEGIN块的内容,即BEGIN后花括号{}的内容。

2、完成BEGIN块的执行,开始执行body块。

3、读入有\n换行符分割的记录。

4、将记录按照指定的域分隔符划分域,填充域,0则表示所有域(即一行内容),1表示第一个域,$n表示第n个域。

5、依次执行各BODY块,pattern部分匹配该行内容成功后,才会执行awk-commands的内容。

6、循环读取并执行各行直到文件结束,完成body块执行。

7、开始END块执行,END块可以输入最终结果。

开始块(BEGIN)

开始块语法格式如下:

BEGIN {awk-commands}

开始块就是在程序启动的时候执行的代码部分,并且它在整个过程中只执行一次。

一般情况下,我们可以在开始块中初始化一些变量。

BEGIN是AWK的关键字,因此它必须是大写的。

注意:开始块部分是可选的,你的程序可以没有开始块部分。

主体块(BODY)

主体部分的语法格式如下:

/pattern/ {awk-commands}

对于每一个输入的行都会执行一次主体部分的命令。

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

注意:在主体块部分没有关键字存在。

结束块(END)

结束块的语法格式如下:

END {awk-commands}

结果块是在程序结束时执行的代码。END也是awk的关键字,它也必须大写。与开始块相似,结束块也是可选的。

实例

先创建一个名为marks.txt的文件。其中包括序列号、学生名称、课程名称与所得分数。

1) 	张三	语文	80
2)	李四	数学	90
3)	王五	英语	87

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

[root@yanan ~]# awk 'BEGIN{printf "序号\t名字\t课程\t分数\n"} {print}' marks.txt
序号	名字	课程	分数
1) 	张三	语文	80
2)	李四	数学	90
3)	王五	英语	87
[root@yanan ~]# 
[root@yanan ~]# 
[root@yanan ~]# awk 'BEGIN{printf "序号\t名字\t课程\t分数\n"}' marks.txt
序号	名字	课程	分数

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

原文链接:https://www.runoob.com/w3cnote/awk-work-principle.html

标签:BEGIN,END,commands,命令,awk,AWK,执行
来源: https://www.cnblogs.com/happy510/p/16541085.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有