【linux】文件与目录命令 - awk


awk 是一款强大的文本处理工具,用于逐行读取文件,根据指定规则对每行内容进行格式化处理和分析。它支持复杂的逻辑运算、正则表达式和条件控制。

1. 基本用法
  • 语法:

    awk [选项] '脚本' 文件
    awk [选项] -f 脚本文件 文件
    
  • 功能:

    • 基于字段对文本数据进行操作,例如过滤、计算、格式化输出等。
  • 此命令是否系统自带:此命令是系统默认自带的,无需额外安装。


2. 常用参数
  • 脚本相关:
    • -f:从指定文件中读取 awk 脚本。
    • -v:定义用户变量,如 -v var=value
  • 输出控制:
    • -F:指定输入文件的字段分隔符(默认是空格或制表符)。
    • --help:显示帮助信息。
    • --version:显示命令版本信息。
  • 内置变量:
    • NR:当前处理的行号。
    • NF:当前行的字段数目。
    • FS:字段分隔符,默认为空格或制表符,可自定义。
    • OFS:输出字段分隔符,默认为空格。
    • RS:记录分隔符,默认为换行符。
    • ORS:输出记录分隔符,默认为换行符。
    • $n:表示当前行的第 n 个字段,例如 $1 表示第一个字段。

3. 用法举例
  • 基本输出
    输出文件的每一行内容:

    awk '{print}' file.txt
    
  • 打印指定字段
    输出文件的第 1 和第 3 列:

    awk '{print $1, $3}' file.txt
    
  • 指定分隔符
    : 分隔字段(如 /etc/passwd 文件):

    awk -F ':' '{print $1, $3}' /etc/passwd
    
  • 条件过滤
    输出第 2 列大于 100 的行:

    awk '$2 > 100 {print $0}' file.txt
    
  • 使用内置变量
    输出行号和每行字段数:

    awk '{print NR, NF}' file.txt
    
  • 统计数据
    计算第 2 列的总和:

    awk '{sum += $2} END {print sum}' file.txt
    
  • 模式匹配
    输出包含 error 的行:

    awk '/error/ {print $0}' file.txt
    
  • 修改分隔符
    将字段用逗号分隔后输出:

    awk 'BEGIN {OFS=","} {print $1, $2}' file.txt
    
  • 复杂脚本
    使用脚本文件处理文本:

    awk -f script.awk file.txt
    

4. 注意事项
  • 默认分隔符为空格,需用 -F 指定其他分隔符。

  • awk 的脚本语言支持复杂逻辑,如条件语句和循环,可用于高级文本处理。

  • 注意 awk 中变量无需声明,直接赋值即可使用。

  • 使用 BEGINEND 块处理全局操作,例如初始化变量或在处理结束后输出汇总结果:

    awk 'BEGIN {print "Start"} {print $0} END {print "End"}' file.txt
    
  • 对于大文件和复杂逻辑,awk 性能优于许多其他文本处理工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小鹏linux

感谢老板,老板大气

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

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

打赏作者

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

抵扣说明:

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

余额充值