欢迎光临
我的个人博客网站

Linux文本处理三剑客之awk学习笔记04:工作流程


工作流程

可以参考man手册。

man --pager='less -p ^"AWK PROGRAM EXECUTION"' awk

示例

awk -v a=1 -v b=2 'BEGIN{...}{...main...}END{...}' x=3 a.txt y=4 b.txt z=5 

  1. 解析CLI中-v选项的变量赋值。
  2. 将awk代码(包含-v选项的变量赋值)编译成awk可以识别的内部格式。
  3. 执行BEGIN代码块。
  4. 根据RS读取文件(根据ARGV数组元素决定待读取的文件)并划分记录。如果没有待读取的文件则从STDIN中读取。每读取一条记录就执行一次main代码块。
      • 若待读取的文件(即位于非选项型参数位置)的文件名格式为var=val,那么将其识别为变量赋值。由于awk工作流程的执行顺序,因此该变量不存在于BEGIN代码块中,也不存在于出现在此变量之前的文件。例如在执行a.txt时,其main代码块中无法识别变量y和变量z。所有此处的变量在END代码块中均有效。
      • 每读取一条记录:
        • 就设置一次NR、FNR、RT和$0等变量;
        • 根据PROCINFO[“FS”]划分字段,设置位置参数/变量$1、$2至$NF;
        • 执行main代码块:pattern通过则执行action,否则不执行。
  5. 执行END代码块。
赞(0) 打赏
未经允许不得转载:张拓的天空 » Linux文本处理三剑客之awk学习笔记04:工作流程
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏