linux awk 学习笔记三(结构化命令、函数)
来源:互联网 发布:logo的设计软件 编辑:程序博客网 时间:2024/06/07 11:58
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 }' passwdroot 0bin 1daemon 2
备注:尽量按照上面例子的格式编写。
使用if… else
[root@auc-test2 tmp]# gawk -F : '{ if ($4<20){ print $1,$4} else { print "------" } }' passwdroot 0bin 1daemon 2adm 4
3、while语句
[root@auc-test2 tmp]# gawk -F : '{total=0;i=1;while(i<4){total=total+i;i++};print "total=",total}' passwdtotal= 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}' passwd333
等价于
[root@eccs_web awk]# gawk -F : '{ total=0> i=1> while (i<4)> {> total = total + i> if( i == 2){> break> }> i++> }> print "total : ",total> }' passwdtotal : 3total : 3
备注:这里的变量i前面没有$符号,课本都弄错了。
4、for循环
[root@eccs_web awk]# gawk -F : '{> total=0> for(i = 1; i < 4; i++){> total += i> }> print "total : ",total> }' passwdtotal : 6total : 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