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

 

原创粉丝点击