linux 之shell篇 awk命令

一、awk编程模型

    awk为程序员提供了完整的编程模型,awk程序由一个主输入循环(main input loop)维持,主输入循环反复执行,直到终止条件被触发。awk已经搭好了主输入循环框架,程序员写的代码被嵌入到主输入循环框架中执行。例如在java中,程序员需要写一个main函数,打开文件、读取文件行、进行相应处理,关闭文件,awk自动完成了上述步骤。

    awk还定义了两个特殊的字段,BEGIN和END,BEGIN用于在主输入循环之前执行,即在未读取文件行之前执行,END在主输入循环之后执行,即在读取输入行完毕后执行。

二、awk使用方法

    awk语句都是由模式和动作组成,模式是一组用于测试输入行是否需要执行动作的规则,动作是包含语句、函数和表达式的执行过程。简而言之,模式决定动作何时触发和触发事件,动作执行对输入行的处理。

    awk [-F 域分隔符] ‘awk程序段’输入文件

    awk -f awk脚本文件 输入文件

    2.1、模式匹配

        awk '/^$/{print "blank line."}' input --> 在input文件中遇到空行就打印blank line.

    2.2、记录和域

        linux 之shell篇 awk命令

    注:awk默认的分隔符为空格

    $1 表示Li Hao   $2 表示 njue $3 表示 025-83481010

    $0 表示整条记录 Li Hao    njue     025-83481010

    2.3、关系和布尔运算符

       linux 之shell篇 awk命令

        awk -F":" '$1~/root/' /etc/passwd --> 表示将/etc/passwd中每条记录以:分割,如果第一个域匹配root,则打印到控制台

    2.4、系统变量

        linux 之shell篇 awk命令

    2.5、内置字符串函数

        linux 之shell篇 awk命令

三、awk的一些简单使用

    linux 之shell篇 awk命令

    注:sturecord文件中记录了两个同学的姓名,电话和三门课程的成绩

    3.1、查找姓Chen的同学

         linux 之shell篇 awk命令

    3.2、统计电话以130开头同学的人数

        linux 之shell篇 awk命令

    3.3、使用awk统计总分和平均分           linux 之shell篇 awk命令