前言
年前杂事比较多一些,特别涉及到对一些日志文本的分析,早就知道awk是这方面处理的神器,在写恶心的php间隙学习一下,虽然我觉得自己的php写的非常规范了,但是那种哦敢调用api、调用扩展的方式还是让我觉得恶心,虽然很方便,话不多说,开始awk学习,可能会分阶段完成这篇文章,有时间就记录一些吧
awk程序设计模型
awk程序是由所谓的主输入(main input)循环组成的。一个循环是一个例程,它将一直重复执行直到有一些存在的条件终止它。你不必写这个循环,它是现成的,它作为一个框架存在,在这个框架中编写的代码能够执行。
主输入循环执行的行数和输入的行数相同。
awk允许你编写两个特殊的例程,他们在任何输入被读取前和所有输入被读取后执行。他们是BEGIN和END规则相关的过程。换句话说,在主输入循环前和主输入循环之后你可以做一些处理。
awk脚本可以分为3个部分:
处理输入前的将做的处理
处理输入过程中将做的处理
处理输入完成后做的处理
awk工作流程:
自动从指定的数据文件中读取一个数据行
自动更新相关的内建变量之值。如:NF,NR,$0,$1,..
依次执行程序中所有的Pattern{Actions}指令。
当执行完程序中所有Pattern{Actions}时,若数据文件中还有未读取的数据,则反复执行上述步骤(awk的程序设计模型决定)
执行awk
awk 'awk程序' 处理文件名
处理文件中包含多少行,awk程序就执行多少次,这是由awk程序设计模型决定的