当前位置: 首页 > 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 性能优于许多其他文本处理工具。

相关文章:

  • 【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
  • 做网站公众号要多少钱/百度关键词排名突然消失了
  • 青岛找网站建设公司/营销客户管理系统
  • 无锡建设公司网站/上海sem
  • 个人开办导航网站需要怎么做/怎么注册个人网站
  • 网站怎么做分站/百度seo如何快速排名
  • 微网站和小程序的区别/网络营销软件大全