Linux cut命令(千字长文)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

在 Linux 系统中,cut 命令如同一把精准的“数据剪刀”,能够快速分割文本文件或标准输入中的内容。无论是处理日志文件、解析 CSV 数据,还是提取特定字段信息,cut 命令都能通过简洁的语法高效完成任务。对于编程初学者而言,掌握这一工具能显著提升文本处理的效率;而对中级开发者来说,深入理解其进阶用法,还能与 grepawk 等命令结合,构建更强大的数据处理流水线。本文将从基础到实战,逐步解析 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 系统管理员和开发者的必备工具。通过本文的讲解,读者应能掌握以下核心要点:

  1. 基础语法:字段选择、字符位置切割。
  2. 进阶技巧:多列选择、管道结合、反向切割。
  3. 实战场景:日志分析、CSV 处理、数据聚合。

建议读者通过以下步骤巩固学习:

  1. 动手练习:使用示例文件或自建数据测试命令效果。
  2. 结合其他命令:尝试与 grepsort 等命令组合,构建复杂流水线。
  3. 查阅手册:通过 man cut 掌握更多高级选项,如 -s(跳过无匹配字段的行)。

掌握 cut 命令不仅能提升文本处理效率,更能为后续学习 awksed 等高级工具打下坚实基础。

最新发布