Linux cut命令(千字长文)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
在 Linux 系统中,cut
命令如同一把精准的“数据剪刀”,能够快速分割文本文件或标准输入中的内容。无论是处理日志文件、解析 CSV 数据,还是提取特定字段信息,cut
命令都能通过简洁的语法高效完成任务。对于编程初学者而言,掌握这一工具能显著提升文本处理的效率;而对中级开发者来说,深入理解其进阶用法,还能与 grep
、awk
等命令结合,构建更强大的数据处理流水线。本文将从基础到实战,逐步解析 cut
命令的使用逻辑,并通过具体案例帮助读者快速上手。
一、cut
命令的核心功能与基本语法
cut
命令的核心功能是按指定规则“切取”文本中的部分内容。它的语法结构灵活,支持按列(字段)、字符位置或分隔符进行切割。
1.1 基础语法格式
cut [选项] [输入文件]
常用选项包括:
-d
:指定分隔符,默认为制表符(Tab)。-f
:选择需要保留的字段(列)。-c
:按字符位置切割文本。
1.2 按字段(列)切割
假设有一个名为 user_list.txt
的文件,内容如下:
Alice 25 Beijing
Bob 30 Shanghai
Charlie 28 Hangzhou
若需提取第二列(年龄)信息,可使用以下命令:
cut -d ' ' -f 2 user_list.txt
25
30
28
解释:
-d ' '
指定空格为分隔符,-f 2
表示选择第二列。- 若字段间分隔符为逗号,只需将
-d
参数替换为-d ','
。
二、进阶用法:多列选择与字符位置切割
2.1 多列选择与范围指定
若需同时提取第一列和第三列,可通过逗号分隔字段号:
cut -d ' ' -f 1,3 user_list.txt
Alice Beijing
Bob Shanghai
Charlie Hangzhou
若需提取连续的字段范围,可用短横线 -
表示区间:
cut -d ' ' -f 1-2 user_list.txt
Alice 25
Bob 30
Charlie 28
2.2 按字符位置切割
-c
选项允许按字符位置切割,适用于固定长度的文本。例如,某文件 data.txt
内容为:
Hello World!
This is a test.
若需提取每行的前 5 个字符:
cut -c 1-5 data.txt
Hello
This
此功能常用于处理日志文件中的时间戳或固定格式数据。
三、结合管道与标准输入:动态数据处理
cut
命令可与 |
管道结合,处理其他命令的输出结果。例如,结合 ps
命令查看进程信息:
ps aux | cut -c 1-10,20-30
此命令将提取 ps aux
的输出中第 1 到 10 列和第 20 到 30 列的字符,适用于快速定位关键信息。
四、实战案例:cut
命令的典型应用场景
4.1 案例 1:解析 CSV 文件
假设有一个 CSV 文件 sales.csv
,内容如下:
Name,Age,City,Revenue
Alice,25,Beijing,15000
Bob,30,Shanghai,20000
提取“姓名”和“销售额”两列:
cut -d ',' -f 1,4 sales.csv
Name,Revenue
Alice,15000
Bob,20000
4.2 案例 2:日志文件分析
日志文件 access.log
中每行记录为:
192.168.1.1 - [10/Jan/2023:12:00:00 +0800] "GET /index.html HTTP/1.1" 200 1234
若需提取客户端 IP 地址(第一列)和响应状态码(第五列):
cut -d ' ' -f 1,9 access.log
192.168.1.1 200
4.3 案例 3:结合其他命令构建流水线
计算某列数值的总和:
cut -d ' ' -f 4 user_list.txt | awk '{sum += $1} END {print sum}'
83
此命令先提取年龄列,再通过 awk
计算总和。
五、常见问题与技巧
5.1 如何处理字段间存在多个分隔符的情况?
若字段间有多个空格或 Tab,可使用 -d
指定分隔符为任意字符,例如:
cut -d ' ' -f 2 file.txt # 即使字段间有多个空格,也能正确识别
5.2 如何反转切割结果?
若需保留除指定字段外的内容,可结合 --complement
选项:
cut -d ' ' -f 2 --complement user_list.txt
Alice Beijing
Bob Shanghai
Charlie Hangzhou
六、总结与学习建议
cut
命令凭借其简洁性和灵活性,成为 Linux 系统管理员和开发者的必备工具。通过本文的讲解,读者应能掌握以下核心要点:
- 基础语法:字段选择、字符位置切割。
- 进阶技巧:多列选择、管道结合、反向切割。
- 实战场景:日志分析、CSV 处理、数据聚合。
建议读者通过以下步骤巩固学习:
- 动手练习:使用示例文件或自建数据测试命令效果。
- 结合其他命令:尝试与
grep
、sort
等命令组合,构建复杂流水线。 - 查阅手册:通过
man cut
掌握更多高级选项,如-s
(跳过无匹配字段的行)。
掌握 cut
命令不仅能提升文本处理效率,更能为后续学习 awk
、sed
等高级工具打下坚实基础。