Linux mawk 命令 - 快速的文本处理和分析工具
• 最后修改:2025-09-05 • 阅读量:129
mawk ( 英文名称:Mike's AWK ) 命令是 AWK 文本处理语言工具的高性能实现版本,它优化 awk 工具的基本功能(对结构化文本进行分析、内容提取和转换),提高了执行速度,降低了内容的占用。
本文将为你介绍 mawk
命令的使用方法,使你对 mawk
命令具有基本的了解,方便你使用该工具处理文本数据。
相关工具对比
特性 | awk | gawk | nawk | mawk |
---|---|---|---|---|
实现 | 基础标准 | GNU 增强版本 | 新版的 AWK | 简易的实现 |
性能 | 标准 | 高度优化 | 较好 | 最快 |
默认系统 | 到预装版本的链接 | RHEL 系预装 | FreeBSD 预装 | Debian 系预装 |
mawk 命令语法结构
如下给出 mawk
命令的基本语法结构:
mawk [选项] '模式 { 动作 }' 文件...
mawk [选项] -f 脚本文件 文件...
语法结构中组成部分的解释:
- 模式:行匹配条件(可以使用正则或表达式等)
- 动作:模式匹配后执行的命令(用
{}
包裹,还可以另外包含”BEGIN{}
:初始处理代码块,END{}
:结束处理代码块“) - 文件:用来读取内容的文件(文件中字段默认的分隔符为空白字符[空格、Tab])
可以使用的其他符号:
FS
:字段分隔符(默认空格)RS
:记录分隔符(默认\n
)NR
:当前行号NF
:当前行字段数
系统安装指南
mawk 是高性能版本的 awk,在没有预装 mawk
的系统中也包含 mawk 软件包。
Debian / Ubuntu 系统
在 Debian / Ubuntu 系统上默认已经预装了 mawk
命令。
RHEL / AlmaLinux 系统
在 RHEL / AlmaLinux / Rocky Linux 系统上使用如下命令安装 mawk 命令:
sudo dnf update && sudo dnf install mawk -y
FreeBSD 系统
在 FreeBSD 系统上使用如下命令安装 mawk 命令:
sudo pkg update
sudo pkg install mawk
mawk 命令使用示例
如下的示例中没有使用特定数据的话,就使用如下的 travel.txt
文本中的游玩数据:
李明 黄山 2025-10-01 自然景观 7.5 3 860
张华 迪士尼 2025-10-01 主题乐园 9.0 2 1580
王芳 故宫 2025-10-02 历史古迹 4.0 1 220
赵杰 西湖 2025-10-02 自然景观 5.5 4 650
字段对应的统一名称为:姓名、游玩地点、游玩日期、游玩类型、游玩时长、同行人数、花费
1. 提取字段数据
使用 $
符号后面跟数字 n
,引用第 n
个字段;当数字为 0
时,引用的整行的内容:
mawk '{print $1,$7}' travel.txt
如上的名称输出第一个字段姓名和第7字段花费,输出内容为:
李明 860
张华 1580
王芳 220
赵杰 650
2. 高性能过滤数据
使用模式添加条件判断,只输出符合条件的数据:
mawk '$7 > 500 {print $1}' travel.txt
如上示例会输出花费大于 500 的人员的姓名:
李明
张华
赵杰
3. 设置处理最多记录数
使用 -m
选项,设置一次处理最大记录数(一个记录是一行内容):
mawk -m 1000 '{print $2}' travel.txt
如上示例最多处理 1000 条记录,如果文件的内容超过 1000 条,则多于的内容就不做处理。
4. 进行数学计算
可以像在编程语言中以上,输出内容可以是一个数学表达式:
echo "3 7" | mawk '{print $1 * $2}'
如上示例:从管道读取内容(包含两个字段,以空格分割),在输出内容时,把第一个字段和第二个字段相乘,输出结果为:
21
命令选项详解
如下给出 mawk 命令选项的详细解释说明:
选项 | 说明 | 技术细节 |
---|---|---|
-f file |
从文件读取脚本 | 支持相对路径 |
-F fs |
指定字段使用的分隔符 | 支持单个字符 |
-v var=val |
定义外部变量,可在动作块中使用 | 仅支持标量 |
-W version |
显示版本信息 | 包含编译选项 |
-W exec file |
执行指定的脚本文件 | 安全模式下执行 |
-W interactive |
使用交互模式优化执行过程 | 该选项会禁用缓冲 |
-W sprintf=num |
设置 sprintf 缓冲区的大小 | 默认值为128 字节 |
-m num |
指定最大处理的记录数 | 为了防止内存溢出 |
-d file |
调试输出内容 | 只在调试版本下使用 |
-D file |
交互模式调试内容 | 只在调试版本下使用 |
结语
本文全面的介绍了 mawk
的语法结构及其功能,并给出了 mawk
命令的具体使用示例,相信你能够对 mawk
命令有个基本的了解,并帮助你正确的使用 mawk
处理文本数据。 mawk
命令可以在 Linux 各发行版和 FreeBSD 系统中使用,基本功能是相同的。