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代码块。
posted @ 2021-01-19 13:03  阿龙弟弟  阅读(230)  评论(0编辑  收藏  举报
回到顶部