zoukankan      html  css  js  c++  java
  • awk模块、变量、执行

    1、BEGIN模块

    BEGIN模块在awk读取文件之前就执行

    BEGIN模式常常被用来修改内置变量ORS、RS、FS、OFS等值

    2、awk内置变量(预定义变量)

    变量名属性
    $0 当前记录,一整行
    $1,$2,$3....$a 当前记录的第n个区域,区域间由FS分隔。
    FS 输入区域分隔符,默认是空格。field separator
    NF 当前记录中的区域个数,就是有多少列。number of field
    NR 已经读出的记录数,就是行号,从1开始。number of record
    RS 输入的记录分隔符默认为换行符。record separator
    OFS 输出区域分隔符,默认也是空格。output record separator
    FNR 当前文件的读入记录号,每个文件重新计算。
    FILENAME 当前正在处理的文件的文件名

    FS RS支持正则表达式

    2.1 第一个作用: 定义内置变量

    2.2 第二个作用:打印标识

    2.3 awk实现计算功能

    3、END模块

    END在awk读取完所有的文件的时候,再执行END模块,一般用来输出一个结果(累加,数组结果)。也可以和BEGIN模块一起使用

    3.1 第一个作用:打印标识

    3.2 第二个作用:累加

    1)统计空行(/etc/services文件)

    2)算术题

    1+2+3......+100=5050,怎么用awk表示?

    4、awk经验

    1、BEGIN和END模块只能有一个,BEGIN{}BEGIN{}或者END{}END{}都是错误的。

    2、找谁干啥模块,可以是多个。

    5、awk执行过程

    1. 命令行的赋值(-F或-V)
    2. 执行BEGIN模式里面的内容
    3. 开始读取文件
    4. 判断条件(模式)是否成立
      • 成立则执行对应动作里面的内容
      • 读取下一行,循环判断
      • 直到读取到最后一个文件的结尾
    5. 最后执行END模式里面的内容
  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/hyunbar/p/13256129.html
Copyright © 2011-2022 走看看