1 awk简介
1.1什么是awk nawk gawk
awk是一种用于处理数据和生成报告的UNIX编程语言。nawk是awk的新版本,gawk是基于Linux的GNU版本。
1.2 awk介绍
awk是3个姓氏的首字母,代表创建该语言的3位作者:Alfred V.Aho、Brian W.Kernighan、Peter J.Weinberger。当然也可以叫它wak或kaw,但常用的是awk。
最初编写于1977年,1985年得以改进以支持更大的程序,还增加了可用户自定义函数、动态正则表达式、同时处理多个输入文件等功能。
1.3 awk版本
awk的版本有很多,包括old awk、new awk、GNU awk(gawk)、POSIX awk等
2 awk格式
基本语法:awk [options] ‘program’ filename …
awk [options] ‘pattern {action}’ filename
选项 模式 操作
options
-F (field separator)
有三种方法:
1、使用空白符分隔字段(默认值);这种情况下,记录的前导空白字符和结尾空白字符(空格和/或制表符)将被忽略。都视为一个空白字符。
2、使用其他单个字符来分隔字段。例如:awk -F “:” 或awk ‘BEGIN{FS=“:”}’
3、使用不止一个字符作为字段分隔符,它将被作为一个正则表达式来解释。例如: FS=“[‘ :\t]"
-v vars=value (自定义变量)
3 awk原理
工作遍历模式:迭代,循环
1、切片 (注意:默认将空格符和制表符都视为空格,而且多个连续的空格都视为一个(自动删除重复的空格)
2、赋予变量 (将fs分隔后的字段都存入变量,整行存入$0)
3、遍历(循环每一个字段,以字段为单位,非每行)
4、逐行 (读取一行,将pattern和action都执行完成,读取下一行)
4 awk输出
4.1一般输出print
4.2格式化输出printf
4.3输出到文件
4.4输出到管道
4.5关闭文件和管道
5 awk输入
5.1 awk程序的输入
5.2输入分隔
5.3多行记录
5.4 getline函数
5.5命令行参数
6 awk变量
6.1内置变量
6.2自定义变量
7 awk模式
7.1 empty模式
7.2 BEGIN and END模式
7.3正则表达式
7.4表达式
7.5复合模式
7.6范围模式
8 awk操作
8.1空语句
8.2表达式
8.3输入
8.4输出
8.5流控制语句
9 awk控制
9.1条件语句
9.2循环
9.3程序控制
10 awk数组
10.1关联数组
10.2二维和多维数组
10.3数组应用
11 awk 函数
11.1内置函数
11.2自定义函数
12 其他
13 附录
13.1正则表达式
13.2表达式运算符