• 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,当前行的字段的个数(即当前行被分割成了几列),字段数量

           

  • 相关阅读:
    我的日常AI使用
    (封装)已知的一个类Student
    jenkins使用 mvnd 加速maven 项目打包
    【笔记】Nginx(5)七层负载均衡
    C++笔记2(内存分区模型,引用)
    【ElasticSearch和whoosh实现项目中搜索功能】
    经典算法试题(一)
    vue-router 重复跳转路径报错源码分析和解决方案
    java基于ssm+jsp 多用户博客个人网站
    完美世界技术综合卷2017知识点
  • 原文地址:https://blog.csdn.net/qq_34776150/article/details/138189348