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

       

相关推荐

  1. Linux 剑客AWK

    2024-04-26 20:20:05       32 阅读
  2. Linux下文本剑客:grep、awk、sed对比

    2024-04-26 20:20:05       61 阅读
  3. Linux文本剑客awk经典案例

    2024-04-26 20:20:05       64 阅读
  4. Linux-剑客grep/sed/awk

    2024-04-26 20:20:05       48 阅读
  5. Linux系统命令剑客awk

    2024-04-26 20:20:05       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 20:20:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 20:20:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 20:20:05       87 阅读
  4. Python语言-面向对象

    2024-04-26 20:20:05       96 阅读

热门阅读

  1. 常用路由交换协议

    2024-04-26 20:20:05       33 阅读
  2. MYSQL 8.0的Linux - Generic版本安装

    2024-04-26 20:20:05       37 阅读
  3. Docker知识点总结

    2024-04-26 20:20:05       34 阅读
  4. 桶排序(Bucket Sort)

    2024-04-26 20:20:05       32 阅读
  5. 多图详解VSCode搭建Python开发环境

    2024-04-26 20:20:05       35 阅读
  6. electron 中统一管理全局常量

    2024-04-26 20:20:05       35 阅读
  7. uniapp

    uniapp

    2024-04-26 20:20:05      32 阅读
  8. C++:智能指针(一)

    2024-04-26 20:20:05       34 阅读
  9. Docker 中常用的命令

    2024-04-26 20:20:05       32 阅读