awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
输入awk的文本首先会被按“行”划分为很多条"记录",每一行表示一条记录,每一行再由分隔符划分成很多个“域”,分隔符默认是空格符,也可以通过命令参数-F来指定
比如 awk -F ';'。
每一条记录会被awk的{action script}处理一次,分割出来的“域”其实就是从当前被action script处理的行提取出来的索引,第一个域用$1索引,第二个用$2,以此类推,其中$0表示对一整行进行索引。
我觉得把awk理解为虚拟机程序会更合适,其中 -F和“输入的文本文件路径”之类的可以可以理解为是虚拟机的参数配置,
而虚拟机执行的脚本就是awk中用单引号引起来的脚本。
一个完整的awk虚拟机脚本应该包含几个部分,脚本的初始化代码,脚本的循环行处理代码,脚本的结束代码。
比如 awk 'BEGIN{ print "init..."} {print "every line have to do this" } END{ print "program have ending " }'
而且编程的语法类似于C语言,甚至比C语言更简约。
我们甚至还可以利用正则表达式从输入的文本过滤出我们需要行进行编程处理(而不是所有行都处理),比如
awk 'BEGIN{ print "init..."} / 双斜杠里面是正则表达式 /{print "every line have to do this" } END{ print "program have ending " }'
那么我们能用awk干嘛?
1.统计文档
2. 对文档做复杂的查询
3. 修改和编辑文档内容。读取文档的内容,利用if语句处理特定的行,然后重定向到新文档
4.操作数据库(这个具体自己找相关资料吧)。
5.简洁的浏览文件,过滤出文档中你需要的信息。