1、格式
if (condition) statement1 或者 if (condition) statement1
2、if 和 if…else
[root@auc-test2 tmp]# gawk '{if(3>2) print "ok"}' passwd
备注:测试发现if后面的括号不需要使用空格隔开,但是为了避免与shell脚本弄混,尽量使用空格隔开,这样也更好看点。
用户组小于20的用户信息
[root@auc-test2 tmp]# gawk -F : '{ if ($4<20) print $1,$4 }' passwd root 0 bin 1 daemon 2
备注:尽量按照上面例子的格式编写。
使用if… else
[root@auc-test2 tmp]# gawk -F : '{ if ($4<20){ print $1,$4} else { print "------" } }' passwd root 0 bin 1 daemon 2 adm 4
3、while语句
[root@auc-test2 tmp]# gawk -F : '{total=0;i=1;while(i<4){total=total+i;i++};print "total=",total}' passwd total= 6
使用break退出循环
[root@eccs_web awk]# gawk -F : '{total=0; i=1; while(i<4){ total=total+i;if(i==2){ break;} i++ }; print total}' passwd 3 3 3
等价于
[root@eccs_web awk]# gawk -F : '{ total=0 > i=1 > while (i<4) > { > total = total + i > if( i == 2){ > break > } > i++ > } > print "total : ",total > }' passwd total : 3 total : 3
备注:这里的变量i前面没有$符号,课本都弄错了。
4、for循环
[root@eccs_web awk]# gawk -F : '{ > total=0 > for(i = 1; i < 4; i++){ > total += i > } > print "total : ",total > }' passwd total : 6 total : 6
5、数学函数
[root@auc-test2 ~]# gawk 'BEGIN{x=1.43;y=int(x);print y}' 1 [root@auc-test2 ~]# gawk 'BEGIN{x=15.43;y=int(x);print y}' 15
6、字符串函数
[root@auc-test2 ~]# gawk 'BEGIN{name="huangbiao";print toupper(name);print "\n";print length(name)}' HUANGBIAO
7、时间函数
[root@auc-test2 ~]# gawk 'BEGIN{print systime()}' 1418870844 [root@auc-test2 ~]# gawk 'BEGIN{date=systime();day=strftime("%A,%B %d,%Y",date);print day}' 星期四,十二月 18,2014