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

【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.dtcms.com/a/35032.html

相关文章:

  • 【Spark+Hadoop】基于Spark大数据小说数据分析推荐系统(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅
  • 前缀和刷题-- LeetCode
  • 第四章:文本分类
  • 从零开始玩转TensorFlow:小明的机器学习故事 5
  • 欧拉筛法寻找素数与计算欧拉函数求和
  • 【Gin-Web】Bluebell社区项目梳理6:限流策略-漏桶与令牌桶
  • 服务器能否拒绝非浏览器发起的HTTP请求?
  • css文本两端对齐
  • 微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)
  • LeetCode-34. 在排序数组中查找元素的第一个和最后一个位置
  • 本地开发用ASP.NET Core Web API项目创建及测试
  • AF3 中扩散模型类总结
  • 使用C++实现简单的TCP服务器和客户端
  • 山东大学软件学院nosql实验四
  • docker离线安装及部署各类中间件(x86系统架构)
  • 【Microsoft PowerPoint for Mac】2分钟配置-MAC一键删除PPT中的所有备注
  • MTK Android12 预装apk可卸载
  • 一文讲解Redis中和本地缓存之间的一致性问题及区别等
  • 用Deepseek直接在word中完成论文的润色(中-中,中-英, 英-中)
  • 如何安装VMware
  • 基于不完整多模态神经影像的阿尔茨海默病诊断领域特定信息保留|文献速递-医学影像人工智能进展
  • 深度学习训练平台建设中的性能优化实践
  • [特殊字符]清华大学:DeepSeek从入门到精通.pdf(清华领航,驾驭DeepSeek,开启AI新境界)
  • ZT11 压缩二维码
  • 【目标检测】目标检测中的数据增强终极指南:从原理到实战,用Python解锁模型性能提升密码(附YOLOv5实战代码)
  • Mac下VSCode调试skynet的lua环境配置
  • 【前端基础篇】Day 1
  • Postman操作(接口测试、生成测试报告、MockServer等)
  • 检查模型配置参数
  • 软件测试的基础入门(一)