Linux cut 命令完全指南 - 轻松提取日志与 CSV 文本数据中的指定列!

概述

在 Linux 环境下,当需要从海量日志文件或 CSV 数据中快速提取所需列时,cut 命令是最轻量且强大的工具。本文将带您了解从基于分隔符的字段提取到固定宽度字节级切片的核心技巧,帮助您在实际工作中立即上手应用。

使用分隔符(-d)与字段(-f)提取 CSV 及系统账户数据

执行 mkdir -p ~/cut_demo && cd ~/cut_demo 命令,创建用于 cut 命令练习的专用目录并切换到该目录。

mkdir -p ~/cut_demo && cd ~/cut_demo

使用 echo 命令编写 users.csv 文件,生成以逗号(,)分隔的测试用用户数据文件。

echo -e ‘id,name,role,department\n1,alice,admin,security\n2,bob,dev,backend\n3,charlie,dev,frontend’ > users.csv

cut 命令是一种根据特定分隔符从文本文件或输出结果中提取所需列(字段)、字节或字符区间的工具。
通过 -d 选项将逗号(,)指定为分隔符,并通过 -f 选项选择第 2 和第 4 个字段,即可整洁地输出 users.csv 文件中的姓名和部门信息。
⚙️ [主要选项]

-d : 手动指定切分字段时使用的分隔符(默认值为制表符 Tab)。
-f : 指定要提取的字段(列)编号或范围。
-c : 以字符而非字节为单位的位置截取数据。
-b : 以字节为单位的位置截取数据。
--complement : 反转输出,仅输出排除指定字段或字符范围后的其余部分。
-s : 不输出不包含分隔符的行。
--output-delimiter : 将输出结果中显示的字段分隔符更改为指定的字符串。

cut -d’,’ -f2,4 users.csv

在包含 Linux 系统账户信息的 /etc/passwd 文件中,以冒号(:)为分隔符提取用户名(第 1 字段)和默认 Shell 路径(第 7 字段),然后使用 head 命令查看前 5 行内容。
像这样将 cut 命令与管道(|)结合使用,即可轻松监控庞大系统配置文件中的关键列数据。

cut -d’:’ -f1,7 /etc/passwd | head -n 5

使用字节(-b)及字符(-c)单位切片处理固定宽度日志

执行 cd ~/cut_demo 命令,切换到之前创建的工作目录以继续练习。

cd ~/cut_demo

生成一个格式固定的包含日期、时间和日志级别的示例日志文件 service.log,用于练习固定宽度的字符切片。

echo -e ‘2026-10-07 14:00:01 [INFO] Service started\n2026-10-07 14:00:05 [WARN] High memory usage\n2026-10-07 14:00:12 [ERROR] Connection timed out’ > service.log

在 cut 命令中指定 -c1-10 选项,截取每行的第 1 到第 10 个字符,精准提取年-月-日日期信息。

cut -c1-10 service.log

使用 -c12-19 选项精确分离并输出日志文件中位于第 12 到第 19 个字符位置的时:分:秒时间戳信息。

cut -c12-19 service.log

像 -c22- 这样省略结束位置时,可以一次性切片提取从第 22 个字符开始到行尾的所有文本,从而提取日志消息内容。

cut -c22- service.log

修改输出分隔符(–output-delimiter)与排除指定字段(–complement)

执行 cd ~/cut_demo 命令,切换到包含先前创建的练习文件的目录。

cd ~/cut_demo

使用 --output-delimiter 选项可以自定义输出提取字段之间的分隔符,以替代默认分隔符。
从以逗号(,)分隔的 users.csv 文件中提取第 2 和第 3 字段,并在字段之间插入空格和管道符号(|),以提升输出的可读性。

cut -d’,’ -f2,3 –output-delimiter=’ | ’ users.csv

指定 --complement 选项可以反转输出,即排除选定字段后输出其余所有列。
与 -f3 选项配合使用,即可剔除第 3 字段(角色信息),完整保留并输出其余所有字段。

cut -d’,’ –complement -f3 users.csv

实战流水线应用:组合 cut、sort 和 uniq 统计分析访问 IP

执行 cd ~/cut_demo 命令,切换到之前创建的专用目录以继续练习。

cd ~/cut_demo

为了模拟分析 Web 服务器的客户端请求记录,创建一个包含空格分隔的访问 IP 及 HTTP 请求信息的示例日志文件 access.log。

echo -e ‘192.168.1.10 - - [07/Oct/2026] “GET /index.html” 200\n192.168.1.15 - - [07/Oct/2026] “POST /login” 401\n192.168.1.10 - - [07/Oct/2026] “GET /dashboard” 200\n10.0.0.5 - - [07/Oct/2026] “GET /api/v1” 200\n192.168.1.10 - - [07/Oct/2026] “POST /logout” 200’ > access.log

通过 cut 命令的 -d' ' -f1 选项,提取以空格分隔的第一列客户端 IP 地址。
接着通过 sort 进行排序,使用 uniq -c 统计重复次数,最后连接 sort -nr 按访问频率降序排列,得出统计排名结果。

cut -d’ ’ -f1 access.log | sort | uniq -c | sort -nr

到此为止,我们学习了如何利用 cut 命令从日志和 CSV 数据中精准提取所需列。
灵活运用分隔符和字段选项,让您的日常文本处理与数据加工工作更加高效。