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

       

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码小飞飞飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值