awk(二)

来源:互联网 发布:淘宝商城河南 编辑:程序博客网 时间:2024/06/06 09:02

一、awk的特殊模式

awk的完整语法awk [选项] 'BEGIN{动作}定址{动作}END{动作}' 文件列表BEGIN{}  : 在读取文件之前就执行,只执行一次;一般用于初始化分隔符、初始化变量、定义数组、打印表头等定址{}    : 这一部分可能会执行多次END{}    : 在处理完文本之后执行,只执行一次;一般用于汇总数据  比如:打印总成绩、平均成绩等等说明:BEGIN和END可以单独存在的1)只有BEGIN,后面不需要加文件
[root@bogon ~]# awk 'BEGIN{print "hello"}'hello
2)只有END,后面必须加文件,文件可以是空文件,也可以是有内容的文件
[root@bogon ~]# awk 'END{print "end"}' pass.txt end
3)没有BEGIN,也没有END
[root@bogon ~]# awk '{sum=0;sum+=$3;print $1,$3,sum}' test.txt Tom 2340 2340Mary 3340 3340Sally 4500 4500Billy 5500 5500Tom 6500 6500
4)有BEGIN,没有END‘
[root@bogon ~]# awk 'BEGIN{sum=0}{sum+=$3;print $1,$3,sum}' test.txt Tom 2340 2340Mary 3340 5680Sally 4500 10180Billy 5500 15680Tom 6500 22180
5)既有BEGIN,又有END
[root@bogon ~]# awk 'BEGIN{sum=0}{sum+=$3;print $1,$3}END{print "total:"sum}' test.txt Tom 2340Mary 3340Sally 4500Billy 5500Tom 6500total:22180

二、awk的脚本

BEGIN{命令    }定址{  命令}END{命令}

1、分支判断结构 if

语法格式:if(条件表达式)      ——  注意:如果if是写在awk的脚本中,那么他的整体都要写在{}中,因为它属于动作{ 动作    }else{动作        }

2、多分支判断语法结构

if(条件表达式){动作        }else if(条件表达式){动作        }... ...else{动作        }
[root@bogon ~]# cat score mike 70rose 99john 85jake 55[root@bogon ~]# cat test1.awk #!/usr/bin/awk -f    //指定文件中的命令的解析环境是awkNR>0{if($2>=90){  print $1": A"}else if($2>=80){  print $1": B"}else {  print $1": C"}}[root@bogon ~]# ./test1.awk score mike: Crose: Ajohn: Bjake: C

3、循环

功能:从行中取出每个字段,循环字段的遍历数组元素1)、while循环 语法:变量初始值while (条件){动作变量的更新            }   2)、for循环语法:for(变量初始值;判断条件;变量的更新){动作            }

个人感觉awk作为一个工具比较好用,所以awk作为脚本语言简单介绍到这里。

原创粉丝点击