awk 是一门语言, 那就可以定义变量/数组,还可以运算, 流程控制
一 定义数组
数组名[索引]=值
定义数组array,有两个元素100, 200 并打印出来
awk 'BEGIN{array[1]=100;array[2]=200;print array[1], array[2]}’
awk 语句之间用分号隔开
二 awk 运算
1 赋值运算 =
awk 'BEGIN{name=“baishuming”;print name}’
2 比较运算 > >= == <= !=
字符串的比较按照ASCII编码比较, 返回结果为1 代表真, 0 代表假
awk 'BEGIN{print “a” =< "b”}’ 1
awk 'BEGIN{print 2 < 5}’ 0
3 数学运算 + - * / % **(幂) ++ —
awk ‘BEGIN{a=“12”; print a, a++,++a; print a+2, a*2, a-1,a^2, !a}’
4 逻辑运算 &&(与) ||(或)
awk ‘BEGIN{a=“12”;b=“5”;print (a>10) && (12 <= b); print (a>10) && (12 > b); print(9<=b) ||(a >= 10) ; print(9 <= b) ||(a <= 10)}’
5 匹配运算 ~匹配 !~非匹配
awk -F: '$1 ~ “root”{print $0}’ file 精确匹配(正则 表达式)
awk -F: '$1 ~ “^root"{print $0}’ file 模糊匹配 第一个字段以root开头
awk -F: '$1 !~ “^root"{print $0}’ file 模糊不匹配
三 awk 环境变量
seq 1 10 >> num
FILELDWIDTHS 以空格分隔的数字列表, 用空格定义每个数据字段的精确宽度
FS input field separator 输入自定义字段分隔符,默认换行符
OFS Output Filed Separator 输出字段分隔符
RS input Record separator 输入自定义记录分隔符, 默认是空格
[root@xiaolong_cloud shell_study]# awk ‘BEGIN{RS=""}{print $1,$2}’ num
1 2
ORS Output Row Separator 输出记录分隔符
[root@xiaolong_cloud shell_study]# awk ‘BEGIN{RS="";ORS="-"}{print $1,$2}’ num
1 2-[root@xiaolong_cloud shell_study]#