zoukankan      html  css  js  c++  java
  • 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代码块。
  • 相关阅读:
    第07组 Beta冲刺(1/5)
    软工实践个人总结
    SDN大作业
    第08组 Beta版本演示
    2019 SDN上机第7次作业
    第08组 Beta冲刺(5/5)
    第08组 Beta冲刺(4/5)
    第08组 Beta冲刺(3/5)
    第08组 Beta冲刺(2/5)
    2019 SDN上机第6次作业
  • 原文地址:https://www.cnblogs.com/alongdidi/p/awkWorkProcess.html
Copyright © 2011-2022 走看看