awk笔记

前言

awk是广泛用于文本信息的提取与格式化中,
处理使用分隔符分隔的数据时尤其方便.
但同时也可以完成grep与sed的几乎所有工作,
因其支持C语言风格的程序语言,可以使用变量,分支,循环,函数等.

注意

awk有多个版本,GNU版本的BSD版本.
其中GNU版本使其支持PCRE级别的正则表达式,
以及更精确的报错信息.

运行模式

  1. pattern {actions;}
  2. 第一行逐个匹配模式
  3. 下一行逐个匹配模式

变量类型

  1. 字符串
  2. 数字
    1. 可以与字符串相互转化
  3. 一维数组
    1. 可以模拟高维数组

模式

正则表达式

布尔表达式

  • 支持C风格的运算符,包括判断与逻辑,还引入了 ~!~ 用于与正则表达式关联
  • 可以与正则表达式使用逻辑运算符结合

特殊表达式

  • BEGIN
    在解析文件前执行,常用于设置变量的值
  • END
    在解析文件后执行,可以用来打印表格和末尾

动作

  • print
  • next
  • exit
  • if…else if…else
  • for
  • 函数
    • function funcname(var) {actions;}
    • {funcname($0)}

特殊变量

  • $0,$1,$2…
  • FS
  • RS
  • OFS
  • ORS

参考网址

  1. 优秀讲解
  2. 官网