awk常用函数以及变量参考

1. awk的常规表达式元字符

换码序列  
^ 在字符串的开头开始匹配
$ 在字符串的结尾开始匹配
. 与任何单个字符串匹配
[ABC] 与[]内的任一字符匹配
[A-Ca-c] 与A-C及a-c范围内的字符匹配(按字母表顺序)
[^ABC] 与除[]内的所有字符以外的任一字符匹配
Desk|Chair 与Desk和Chair中的任一个匹配
[ABC][DEF] 关联。与A、B、C中的任一字符匹配,且其后要跟D、E、F中的任一个字符。
[ABC]* 与A、B或C中任一个出现0次或多次的字符相匹配
[ABC]+ 与A、B或C中任何一个出现1次或多次的字符相匹配
[ABC]? 与一个空串或A、B或C在任何一个字符相匹配
(Blue|Black)berry 合并常规表达式,与Blueberry或Blackberry相匹配

2. awk算术运算符

运算符 用途
x^y x的y次幂
x**y 同上
x%y 计算x/y的余数(求模)
x+y x加y
x-y x减y
x*y x乘y
x/y x除y
-y 负y(y的开关符号);也称一目减
++y y加1后使用y(前置加)
y++ 使用y值后加1(后缀加)
-y y减1后使用y(前置减)
y- 使用后y减1(后缀减)
x=y 将y的值赋给x
x+=y 将x+y的值赋给x
x-=y 将x-y的值赋给x
x*=y 将x*y的值赋给x
x/=y 将x/y的值赋给x x%=y 将x%y的值赋给x
x^=y 将x^y的值赋给x
x**=y 将x**y的值赋给x

3. awk允许的测试:

操作符 含义
x==y x等于y
x!=y x不等于y
x>y x大于y
x>=y x大于或等于y
x< =y x小于或等于y
x~re x匹配正则表达式re
x!~re x不匹配正则表达式re

4. awk的操作符(级别越高越优先)

级别 运算符 说明
1 =,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>= 赋值、运算
2 || 逻辑或
3 && 逻辑与
4 | 按位或
5 ^ 按位异或
6 & 按位与
7 ==,!= 等于,不等于
8 <=,>=,<,> 小于等于,大于等于,小于,大于
9 <<,>> 按位左移,按位右移
10 +,- 加,减
11 *,/,% 乘,除,取模
12 !,~ 逻辑非,按位取反或补码
13 -,+ 正,负

5. awk内置变量(预定义变量)

说明:表中v项表示第一个支持变量的工具(下同):A=awk,N=nawk,P=POSIX awk,G=gawk

V 变量 含义 缺省值
N ARGC 命令行参数个数  
G ARGIND 当前被处理文件的ARGV标志符  
N ARGV 命令行参数数组  
G CONVFMT 数字转换格式 %.6g
P ENVIRON UNIX环境变量  
N ERRNO UNIX系统错误消息  
G FIELDWIDTHS 输入字段宽度的空白分隔字符串  
A FILENAME 当前输入文件的名字  
P FNR 当前记录数  
A FS 输入字段分隔符 空格
G IGNORECASE 控制大小写敏感0(大小写敏感)  
A NF 当前记录中的字段个数  
A NR 已经读出的记录数  
A OFMT 数字的输出格式 %.6g
A OFS 输出字段分隔符 空格
A ORS 输出的记录分隔符 新行
A RS 输入的记录他隔符 新行
N RSTART 被匹配函数匹配的字符串首  
N RLENGTH 被匹配函数匹配的字符串长度  
N SUBSEP 下标分隔符 \034

6. awk的内置函数

V 函数 用途或返回值
N gsub(reg,string,target) 每次常规表达式reg匹配时替换target中的string
N index(search,string) 返回string中search串的位置
A length(string) 求串string中的字符个数
N match(string,reg) 返回常规表达式reg匹配的string中的位置
N printf(format,variable) 格式化输出,按format提供的格式输出变量variable。
N split(string,store,delim) 根据分界符delim,分解string为store的数组元素
N sprintf(format,variable) 返回一个包含基于format的格式化数据,variables是要放到串中的数据
G strftime(format,timestamp) 返回一个基于format的日期或者时间串,timestmp是systime()函数返回的时间
N sub(reg,string,target) 第一次当常规表达式reg匹配,替换target串中的字符串
A substr(string,position,len) 返回一个以position开始len个字符的子串
P totower(string) 返回string中对应的小写字符
P toupper(string) 返回string中对应的大写字符
A atan(x,y) x的余切(弧度)
N cos(x) x的余弦(弧度)
A exp(x) e的x幂
A int(x) x的整数部分
A log(x) x的自然对数值
N rand() 0-1之间的随机数
N sin(x) x的正弦(弧度)
A sqrt(x) x的平方根
A srand(x) 初始化随机数发生器。如果忽略x,则使用system()
G system() 返回自1970年1月1日以来经过的时间(按秒计算)