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代码块。
  • 相关阅读:
    POJ 1703 Find them, Catch them
    POJ 2236 Wireless Network
    POJ 2010 Moo University
    POJ 2184 Cow Exhibition
    POJ 3280 Cheapest Palindrome
    POJ 3009 Curling 2.0
    POJ 3669 Meteor Shower
    POJ 2718 Smallest Difference
    POJ 3187 Backward Digit Sums
    POJ 3050 Hopscotch
  • 原文地址:https://www.cnblogs.com/alongdidi/p/awkWorkProcess.html
Copyright © 2011-2022 走看看