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、记录和域
注:awk默认的分隔符为空格
$1 表示Li Hao $2 表示 njue $3 表示 025-83481010
$0 表示整条记录 Li Hao njue 025-83481010
2.3、关系和布尔运算符
awk -F":" '$1~/root/' /etc/passwd --> 表示将/etc/passwd中每条记录以:分割,如果第一个域匹配root,则打印到控制台
2.4、系统变量
2.5、内置字符串函数
三、awk的一些简单使用
注:sturecord文件中记录了两个同学的姓名,电话和三门课程的成绩
3.1、查找姓Chen的同学
3.2、统计电话以130开头同学的人数
3.3、使用awk统计总分和平均分