• Linux 三剑客之AWK


    1. 命令

    awk [参数] [处理内容] [操作对象]

    1.1. 参数

            -F参数:这个参数用于指定输入字段的分隔符。例如,awk -F: '{print $1}' file.txt 会将文件file.txt中以冒号分隔的第一个字段打印出来。如果不指定-F参数,awk默认使用空格或制表符作为字段分隔符。

            -v参数:该参数用于在awk脚本中创建变量并赋值。例如,awk -v var=10 '{print $1+var}' file.txt 会将file.txt中每行的第一个字段与变量var相加并打印出来。

            -f参数:这个参数允许从文件中读取awk脚本,这样可以将复杂的awk脚本保存在文件中,然后通过 awk -f script.awk file.txt 来执行。这对于处理复杂的文本处理任务非常有用,可以使脚本更易于管理和重用。

    1.2. 处理内容

    操作(Action):操作是在模式匹配成功后要执行的命令。这些命令通常用花括号 {} 包围,并且可以包含任何有效的 awk 语句,例如打印字段、进行数学运算等。

    1.3. 操作对象

            处理文件:通常,你可以在命令行中指定一个或多个文件名,awk 会按照给定的文件顺序逐个处理。

            处理标准输入:如果没有指定文件,awk 可以从标准输入(stdin)中读取数据。这通常是通过管道将其他命令的输出传递给 awk。

    2. 模式

            正则表达式匹配:awk支持使用正则表达式进行模式匹配。例如,awk '/pattern/ { action }' 会匹配包含特定模式的行,并对这些行执行相应的操作。正则表达式可以非常灵活,能够匹配各种复杂的文本模式。

            关系运算符匹配:awk也支持使用关系运算符进行模式匹配,如等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等。这些运算符可以用来比较字段或变量的值,从而根据比较结果执行相应的操作。

            组合模式匹配:可以将正则表达式和关系运算符结合起来使用,以创建更复杂的匹配模式。例如,可以使用逻辑运算符&&(与)和||(或)来组合多个条件,从而实现更精细的匹配控制。

            范围模式匹配:awk还支持范围模式匹配,即指定一个开始模式和一个结束模式,然后对这个范围内的所有行执行特定的操作。这种匹配方式在处理具有特定结构的文本文件时非常有用。

            BEGIN和END模式:BEGIN和END是awk的特殊模式,它们分别在处理输入文件之前和之后执行一次。BEGIN模式通常用于初始化变量或执行一些预处理操作,而END模式则用于在处理完所有输入后执行一些清理或总结性操作。

            ENDFILE模式: ENDFILE是 awk 中的一个特殊模式,它在处理多文件输入时非常有用。当 awk 读取并处理完一个输入文件的所有行之后,但在开始处理下一个输入文件之前,会执行与 ENDFILE 模式相关联的动作。这个模式在 awk 的较新版本(例如 gawk)中可用。

    3. 变量

    3.1. 内置变量

            FS:输入字段分隔符, 默认为空白字符

            OFS:输出字段分隔符, 默认为空白字符

            RS:输入记录分隔符(输入换行符), 指定输入时的换行符

            ORS:输出记录分隔符(输出换行符),输出时用指定符号代替换行符

            NF:number of Field,当前行的字段的个数(即当前行被分割成了几列),字段数量

           

  • 相关阅读:
    7个技巧帮助你进行更有吸引力的脉动/脉搏调查
    C#使用DevExpress中的chartcontrol
    消失的它:网络层分片包中的第一个分片包去哪了?
    docker 常用
    MySql基础一之【了解MySql与DBeaver操作MySql】
    网络管理——直接网络管理规范
    聊聊动效降级
    霸王餐外卖点餐系统源码 优惠返利餐 外卖好评补单平台 Wap+公众号
    Jnpf 快速开发平台框架源码 3.4全新版本上线 java+Netcore版本 旗舰版企业版
    Halo-Theme-Hao文档:如何设置导航栏?
  • 原文地址:https://blog.csdn.net/qq_34776150/article/details/138189348