awk命令使用实例

简介: awk命令使用实例

Awk是为高级文本处理而设计的通用脚本语言。它主要用作报告和分析工具。本文介绍awk在命令行中操作文本的使用方式。
Awk一次对一条记录进行操作,直到到达输入的末尾。记录由一个称为记录分隔符的字符分隔。默认的记录分隔符是换行符,这意味着文本数据中的每一行都是一个记录。

每条记录中的字段由$后跟字段号(以1开头)引用。第一个字段用$1表示,第二个字段用$2表示,依此类推。最后一个字段也可以用特殊变量$NF引用。整个记录可以用$0引用。

Awk模式
Awk支持不同类型的模式,包括正则表达式、关系表达式、范围和特殊表达式模式。

在下面的例子中,将创建一个名为“ teams.txt”的文件,文件内容如下:

[root@localhost ~]# cat teams.txt

Bucks Milwaukee 60 22 0.732
Raptors Toronto 58 24 0.707
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
正则表达式模式
Awk的正则表达式模式用斜线(//)包含起来,例如:要显示包含“0.5”的每条记录,可以运行以下命令:

[root@localhost ~]# awk '/0.5/ {print $0}' teams.txt
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
awk命令使用实例awk命令使用实例
要显示包含“0.5”的每条记录的第一个和第二个字段:

[root@localhost ~]# awk '/0.5/ {print $1,$2}' teams.txt
Celtics Boston
Pacers Indiana
awk命令使用实例awk命令使用实例
显示一个或者多个数字开头的记录,并打印第一列:

[root@localhost ~]# awk '/^[0-9]/ {print $1}' teams.txt
76ers
awk命令使用实例awk命令使用实例

关系表达式模式
关系表达式模式通常用于匹配特定字段或变量的内容。
常用的关系运算符有:

~:包含
!~:不包含

:大于
<:小于
=:大于等于

<=:小于等于
=:等于
!=:不等于
使用~“包含”比较运算符。例如,显示第二个字段中包含“ia”字符的每条记录:

[root@localhost ~]# awk '$2 ~ /ia/ {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Pacers Indiana 48 34 0.585
awk命令使用实例awk命令使用实例
若要匹配不包含给定字符的记录,可以使用!~不包含操作符。例如,显示第二个字段中不包含“ia”字符的每条记录:

[root@localhost ~]# awk '$2 !~ /ia/ {print $0}' teams.txt
Bucks Milwaukee 60 22 0.732
Raptors Toronto 58 24 0.707
Celtics Boston 49 33 0.598
使用!=“不等于”操作符,
awk命令使用实例awk命令使用实例
使用>=“大于等于”操作符,显示第四个字段大于等于30的记录:

[root@localhost ~]# awk '$4 >= 30 {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
awk命令使用实例awk命令使用实例

范围模式
范围模式由逗号分隔的两组字符组成,从与第一个字符串匹配的记录开始,直到与第二个字符串的记录匹配为止的所有记录。

例如,显示从“Raptors”到 “Celtics”在内的记录,:

[root@localhost ~]# awk '/Raptors/,/Celtics/ {print $0}' teams.txt
Raptors Toronto 58 24 0.707
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
awk命令使用实例awk命令使用实例
范围模式也可以使用关系表达式,例如,显示第四个字段等于31到第四个字段等于34 的记录:

[root@localhost ~]# awk '$4 == 31 , $4 == 34 {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Celtics Boston 49 33 0.598
Pacers Indiana 48 34 0.585
awk命令使用实例awk命令使用实例

特殊表达式模式
Awk包括以下特殊模式。

BEGIN:在处理记录之前执行此操作。
END:用于在处理记录之后执行此操作。
BEGIN模式通常用于设置变量,END模式用于处理统计的数据。例如,下面将显示“Start Processing.”,然后显示第三个字段,最后显示”End Processing.”:

[root@localhost ~]# awk 'BEGIN {print "Start Processing."};{print $3};END {print "End Processing."}' teams.txt
Start Processing.
60
58
51
49
48
End Processing.
awk命令使用实例awk命令使用实例

内置变量
Awk有许多内置变量,允许控制程序的处理方式。下面是一些常见的内置变量:

NF:记录中的字段数
NR:当前记录的编号
FILENAME:当前正在处理的输入文件名称
FS:字段分隔符
RS:记录分隔符
OFS:输出字段分隔符
ORS:输出记录分隔符
下面是一个显示如何打印文件名和行数的示例:

[root@localhost ~]# awk 'END {print "File" , FILENAME , "contains" , NR , "lines."}' teams.txt
File teams.txt contains 5 lines.
总结
Awk是最强大的文本处理工具之一。

本文原创地址:https://www.linuxprobe.com/awk-cmd-example.html编辑:逄增宝,审核员:逄增宝

相关文章
|
Arthas 监控 Java
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
34061 8
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
Java
JVM - 应用JVM核心参数推荐设置
JVM - 应用JVM核心参数推荐设置
607 0
|
18天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
8625 25
|
17天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
3073 14
|
16天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
2115 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
5天前
|
人工智能 JSON Linux
【全网最详细】ComfyUI使用教程:下载+本地部署+配置+工作流搭建一篇搞定(2026最新版)
ComfyUI是一款免费开源的本地AI绘图工具,采用节点式工作流设计,支持文生图、图生图、局部重绘、放大、换脸等多种功能。可离线运行,依赖显卡加速,无需联网。支持自定义流程保存与分享,插件生态丰富,适合进阶用户。(239字)
|
17天前
|
云安全 人工智能 安全
|
11天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)