awk笔记
前言
awk是广泛用于文本信息的提取与格式化中,
处理使用分隔符分隔的数据时尤其方便.
但同时也可以完成grep与sed的几乎所有工作,
因其支持C语言风格的程序语言,可以使用变量,分支,循环,函数等.
注意
awk有多个版本,GNU版本的BSD版本.
其中GNU版本使其支持PCRE级别的正则表达式,
以及更精确的报错信息.
运行模式
- pattern {actions;}
- 第一行逐个匹配模式
- 下一行逐个匹配模式
变量类型
- 字符串
- 数字
- 可以与字符串相互转化
- 一维数组
- 可以模拟高维数组
模式
正则表达式
布尔表达式
- 支持C风格的运算符,包括判断与逻辑,还引入了
~
与!~
用于与正则表达式关联 - 可以与正则表达式使用逻辑运算符结合
特殊表达式
- BEGIN
在解析文件前执行,常用于设置变量的值 - END
在解析文件后执行,可以用来打印表格和末尾
动作
- next
- exit
- if…else if…else
- for
- 函数
- function funcname(var) {actions;}
- {funcname($0)}
特殊变量
- $0,$1,$2…
- FS
- RS
- OFS
- ORS