zoukankan      html  css  js  c++  java
  • (3)awk命令行结构和语法结构

    awk命令行结构和语法结构

    awk命令行结构

    awk [ -- ] program-text file ...        (1)
    awk -f program-file [ -- ] file ...     (2)
    awk -e program-text [ -- ] file ...     (3)

    其中

    program-text即awk命令行中awk代码部分,一般使用单引号包围。
    -f program-file表示awk代码部分写在文件中,然后使用-f选项去引用这个文件。
    -e program-text也表示使用awk代码块,所有语法1和语法3基本是等价的,但是如果使用-f,又要在代码行中写awk代码,则必须使用-f和-e,即awk -f file -e 'awk-code',而不能是awk -f file 'awk-code'

    awk语法结构

    awk语法结构即awk代码部分的结构。

    awk的语法充斥着pattern{action}的模式,它们称为awk rule。

    关于awk的语法:
    
    多个pattern{action}可以直接连接连用
    action中多个语句如果写在同一行,则需使用分号分隔
    pattern部分用于筛选行,action表示在筛选通过后执行的操作
    pattern和action都可以省略
    省略pattern,等价于对每一行数据都执行action
    例如:awk '{print $0}' a.txt
    省略代码块{action},等价于{print}即输出所有行
    例如:awk '/Alice/' a.txt等价于awk '/Alice/{print $0}' a.txt
    省略代码块中的action,表示对筛选的行什么都不做
    例如:awk '/Alice/{}' a.txt
    pattern{action}任何一部分都可以省略
    例如:awk '' a.txt

    pattern和action

    对于pattern{action}语句结构(都称之为语句块),其中的pattern部分可以使用下面列出的模式:

    # 特殊pattern
    BEGIN
    END
    
    # 布尔代码块
    /regular expression/    # 正则匹配成功与否 /a.*ef/{action}
    relational expression   # 即等值比较、大小比较 3>2{action}
    pattern && pattern      # 逻辑与 3>2 && 3>1 {action}
    pattern || pattern      # 逻辑或 3>2 || 3<1 {action}
    ! pattern               # 逻辑取反 !/a.*ef/{action}
    (pattern)               # 改变优先级
    pattern ? pattern : pattern  # 三目运算符决定的布尔值
    
    # 范围pattern,非布尔代码块
    pattern1, pattern2      # 范围,pat1打开、pat2关闭,即flip,flop模式
  • 相关阅读:
    洛谷P1026 统计单词个数【区间dp】
    洛谷P1417 烹调方案【dp】
    ArcEngine不同种类的工作空间建立查询ICursor时“超出系统资源”
    解释器模式
    设计模式6大原则简述
    访问者模式
    享元模式
    中介者模式
    职责链模式
    GridControl/GridView的分组操作
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12389097.html
Copyright © 2011-2022 走看看