内容正文:
第8章 awk文本处理工具
awk简介
awk工作流程
awk工作原理
awk语法格式
awk内置变量
awk模式
awk流程控制
awk中的函数
学习目标
熟悉
熟悉
掌握
掌握
熟悉awk及其工作原理
1
掌握awk流程控制
4
2
熟悉awk语法格式
3
掌握awk模式详解
销售额 掌握知识 理解知识 熟悉知识 了解知识 2.5 2.5 2.5 2.5
awk简介
8.1
awk工作流程
8.2
awk工作原理
8.3
☞点击查看本小节知识架构
awk语法格式
8.4
awk内置变量
8.5
awk模式
8.6
awk流程控制
8.7
awk中的函数
8.8
☞点击查看本小节知识架构
☞点击查看本小节知识架构
awk用于在Linux/Unix下处理文本和数据。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等,是Linux/Uinx下的一个强大文本分析、编程工具,相对于grep的查找、sed的编辑、awk尤为擅长数据分析及生成报告。awk一般在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,如数组、函数等。 本章针对awk文本处理工具展开介绍。
8.1 awk简介
awk被称为文本处理三剑客之一,三个字母分别代表其创建者姓氏的第一个字母。因为它的创建者是三个人,分别是Alfred Aho、Peter Weinberger、Brian Kernighan。awk拥有自己的语言——awk程序设计语言,三位创建者已将它正式定义为“样式扫描和处理语言”。awk是一种报表生成器,对文件内容进行各种“排版”操作。它允许您创建简短的程序,这些程序的功能读入输入文件、数据排序、处理数据、对输入执行计算以及生成报表等。通过man awk可以获取相关功能说明。awk是一种过程式编程语言或脚本语言解释器,支持条件判断、数组、循环等功能。
8.2 awk工作流程
awk的处理文本和数据的流程方式如下:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕);如果没有指定模式,则所有被操作所指定的行都被处理。
awk有两个特殊的模式:BEGIN和END,它们分别放置在没有读取任何数据之前及在所有的数据读取完成以后执行。
awk工作的整体流程如图所示。从图可以看出,在读取文件内容前,BEGIN后面的指令将被执行,然后读取文件内容并判断是否与特定的模式匹配,如果匹配,则执行正常模式后面的指令;最后执行END模式命令,并输出文档处理后的结果。
8.2 awk工作流程
8.3 awk工作原理
awk格式为:
BEGIN语句块在awk开始从输入流中读取之前被执行,这是一个可选的语句块,如变量初始化、打印输出表格的表头等情况。
END语句块在awk在处理完所有的文本之后被执行(如打印所有行后)被执行,之后打印出分析结果这类操作,都可以在END语句块中完成。它也是一个可选语句块。
pattern语句块中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{print},即打印每一个读取到的行,awk读取的每一行都会执行该语句块。
8.3 awk工作原理
其步骤如下所示:
第一步:执行BEGIN{commands}语句块中的语句;
第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{commands}语句块,它逐行扫描文件,从第一行至最后一行;
第三步:当读至输入流末尾时,执行END{commands}语句块。
8.4 awk语法格式
8.4.1
awk基本语法格式
返回目录
8.4.2
awk语法选项实例
8.4.1 awk基本语法格式
awk的基本语法格式如下:
或:
8.4 awk工作原理
或:
8.4.1 awk基本语法格式
awk命令选项如表所示。
8.4 awk工作原理
8.4.2 awk语法选项实例
awk语法选项在工作场景中使用颇多。使用方法也有很多,下面通过几个简单的案例来展示一下awk的常用方法。
文件/etc/passwd中匹配root的行。
8.4 awk工作原理
8.4.2 awk语法选项实例
文件/etc/passwd打印满足条件行的第一个字段和第三个字段。
8.4 awk工作原理
8.4.2 awk语法选项实例
awk打印出“hello,awk”字符串。
8.4 awk工作原理
对文件/etc/passwd逐行处理。
8.4.2 awk语法选项实例
当在指定/etc/passwd作为输出文件时,awk就会依次读/etc/passwd中的每一行执行print命令。awk用法如图所示。
8.4 awk工作原理
8.4.2 awk语