当前位置: 首页 > article >正文

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

文章目录

        • 1. 基本用法
        • 2. 常用参数
        • 3. 用法举例
        • 4. 注意事项

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 性能优于许多其他文本处理工具。


http://www.kler.cn/a/560532.html

相关文章:

  • PHP MySQL 创建数据库
  • 机器学习数学通关指南——微分中值定理和积分中值定理
  • 塔能物联运维助力智慧隧道安全升级——城市交通保障新力量
  • std::thread的同步机制
  • 计算机视觉算法实战——跌倒检测(主页有源码)
  • 山东大学软件学院nosql实验三
  • 一个Flutter跨4端开发的案例
  • 流媒体网络协议全解析:从实时传输到自适应流,如何选择最优方案?
  • 【C++设计模式】工厂方法设计模式:深入解析从基础到进阶
  • 云电脑接入DeepSeek?探讨ToDesk云电脑、海马云、顺网云的AI潜能
  • API技术深度解析:构建高效、安全与可扩展的接口服务
  • Linux下文件权限与安全
  • 使用 INFINI Console 配置集群监控 Webhook 通知指南
  • 正则化及其在机器学习中的作用
  • fps动作系统4.1:移动系统
  • 2025年3月最新算法-鲸鱼迁徙优化算法Whale Migration Algorithm-附Matlab免费代码
  • Seata1.5.2学习(一)——分布式事务与安装配置
  • 【HarmonyOS Next】鸿蒙循环渲染ForEach,LazyForEach,Repeat使用心得体会
  • 9.【线性代数】—— 线性相关性, 向量空间的基,维数
  • 嵌入式产品级-超小尺寸游戏机(从0到1 硬件-软件-外壳)