linux awk 学习笔记三(结构化命令、函数)

 

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

猜你喜欢

转载自hbiao68.iteye.com/blog/2170726