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 系统中使用,基本功能是相同的。