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日以来经过的时间(按秒计算) |