news 2026/4/4 9:40:13

Linux 命令:cut

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 命令:cut

概述

cut命令是文本按列/字符截取工具,核心作用是从文本文件或命令输出中,按固定字符位置指定列(分隔符分割)提取指定内容,是处理结构化文本(CSV、日志、配置文件)的轻量高频工具,特点是简单高效、轻量快速,适合快速提取文本中的关键列/字符段。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、核心特点

  1. 三种截取模式:按字符字节(分隔符)截取,覆盖所有文本截取场景;
  2. 轻量高效:语法极简,比awk更适合简单列/字符提取,执行速度更快;
  3. 支持管道:可直接处理其他命令的输出(如ls | cutps -ef | cut);
  4. 仅支持单字符分隔符:列模式下分隔符只能是单个字符(如逗号、空格、竖线),不支持多字符分隔。

二、基本语法

cut[选项][文件]
  • 无文件时,默认读取标准输入(管道常用);
  • 核心是选项指定截取模式,三种模式互斥(一次只能用一种)。

三、核心选项

cut的选项围绕三种截取模式设计,搭配-f/-c/-b指定截取范围,-d指定列分隔符,是整个命令的核心,高频选项仅5个,易记易用。

🔹 核心截取模式
选项模式作用适用场景
-c N字符模式字符位置截取(中文/英文均按1个字符算)固定字符长度的文本(如固定格式的日志、编码串)
-b N字节模式字节位置截取(英文1字节,中文UTF-8占3字节)处理纯英文文本/需要按字节精准截取的场景
-f N列模式截取(需配合-d指定分隔符)结构化文本(CSV、空格/逗号分隔的表格、日志)
🔹 辅助选项
选项作用搭配场景
-d "字符"指定列分隔符(默认制表符\t仅配合-f(列模式)使用
--complement反向截取:截取除指定范围外的所有内容所有模式均可使用(过滤指定列/字符)
🔹 范围表示法

N可以是单个数字、范围或多个值,支持以下写法(所有模式通用):

  • N:单个值,如-c 5(第5个字符)、-f 2(第2列);
  • N-M:连续范围,如-c 1-5(1-5个字符)、-f 2-4(2-4列);
  • N-:从N到末尾,如-c 3-(第3个字符到最后)、-f 1-(第1列到最后);
  • -M:从开头到M,如-c -5(1-5个字符)、-f -3(1-3列);
  • N,M:多个不连续值,如-c 1,3,5(1、3、5个字符)、-f 1,3(1、3列)。

四、经典实操示例

准备测试文件
# 1. 固定字符文本:char.txt(用于-c/-b模式) 0123456789 abcdefghij Linux命令学习 # 2. 结构化列文本:csv.txt(逗号分隔,用于-f/-d模式) ID,姓名,年龄,城市,薪资 1,张三,25,北京,8000 2,李四,30,上海,15000 3,王五,28,广州,10000 # 3. 空格分隔文本:space.txt(用于-f/-d模式,默认分隔符为\t,空格需手动指定) 1 张三 25 北京 8000 2 李四 30 上海 15000 3 王五 28 广州 10000

五、按字符截取

中文/英文/数字均按1个字符计算,适合固定字符长度的文本截取,是最通用的截取模式(推荐优先使用)。

# 1. 截取单个字符:第5个字符cut-c5char.txt# 输出:4、e、令# 2. 截取连续字符:1-5个字符cut-c1-5 char.txt# 输出:01234、abcde、Linux命# 3. 截取从N到末尾:第3个字符到最后cut-c3- char.txt# 输出:23456789、cdefghij、nux命令学习# 4. 截取多个不连续字符:1、3、5个字符cut-c1,3,5 char.txt# 输出:024、ace、Lnx令# 5. 反向截取:除了1-3个字符,截取剩余所有cut-c1-3 --complement char.txt# 输出:3456789、defghij、x命令学习

六、按列截取

最常用的场景,处理逗号/空格/竖线分隔的结构化文本,-d指定单字符分隔符-f指定列范围,搭配范围表示法灵活提取列。

场景1:逗号分隔的CSV文件
# 1. 截取单个列:第2列(姓名)cut-d","-f2csv.txt# 输出:姓名、张三、李四、王五# 2. 截取连续列:1-3列(ID、姓名、年龄)cut-d","-f1-3 csv.txt# 输出:ID,姓名,年龄 / 1,张三,25 / ...# 3. 截取多个不连续列:2列(姓名)+5列(薪资)cut-d","-f2,5csv.txt# 输出:姓名,薪资 / 张三,8000 / ...# 4. 反向截取:除了第4列(城市),截取所有列cut-d","-f4--complement csv.txt# 输出:ID,姓名,年龄,薪资 / 1,张三,25,8000 / ...
场景2:空格分隔的文本
# 指定分隔符为空格(-d " "),截取第2列(姓名)cut-d" "-f2space.txt# 输出:张三、李四、王五
场景3:处理命令输出

直接截取其他命令的输出,无需临时文件,是日常运维的高频用法:

# 1. 截取ls -l的文件权限和文件名(1列+9列,空格分隔)ls-l|cut-d" "-f1,9# 输出:-rw-r--r-- char.txt / drwxr-xr-x test_dir/# 2. 截取ps -ef的进程PID(2列)和进程名(8列后,用8-)ps-ef|cut-d" "-f2,8-# 输出:PID COMMAND / 1 /usr/lib/systemd/systemd / ...# 3. 截取ifconfig的IP地址(先过滤行,再截取字符,组合用法)ifconfigeth0|grep"inet "|cut-c14-26# 输出:192.168.1.100(不同系统字符位置可能不同)

七、按字节截取

字节数截取,英文/数字占1字节,UTF-8中文占3字节,仅适合纯英文/数字文本,中文文本使用会出现乱码(推荐用-c替代)。

# 纯英文文本:截取1-5字节(等价于1-5字符)echo"LinuxCommand"|cut-b1-5# 输出:Linux# 含中文文本:截取1-3字节(仅截取中文的第一个字节,乱码)echo"Linux命令"|cut-b1-5# 输出:Lin�(乱码,推荐用-c 1-5)

八、与awk的核心区别

cutawk都能提取文本列,二者定位不同,cut轻量简单,awk强大灵活,按需选择是关键,避免用错工具。

命令核心优势核心劣势适用场景
cut语法极简、执行快、轻量仅支持单字符分隔符、无处理逻辑、功能单一简单列/字符提取(无复杂逻辑,如直接取2/3列)
awk支持多字符分隔符、可加处理逻辑(判断/计算)、功能强大语法稍复杂、比cut略慢复杂列处理(多分隔符、列计算、条件过滤)
经典对比示例
# 需求:提取逗号分隔的第2列(姓名)# cut:语法极简,一步到位cut-d","-f2csv.txt# awk:语法稍复杂,适合后续加处理逻辑awk-F","'{print $2}'csv.txt# 需求:提取多字符分隔的文本(如##分隔),cut无法实现,只能用awkecho"1##张三##25"|awk-F"##"'{print $2}'# 输出:张三(cut -d "##" 会报错,因为-d仅支持单字符)

结论简单列/字符提取用cut(高效快捷);复杂列处理(多分隔符、条件、计算)用awk(灵活强大)。

九、高频组合用法

cut常与grep(过滤行)、sort(排序)、uniq(去重)组合,实现「过滤行→提取列→排序→去重」的完整文本处理流程,是日常运维/日志分析的经典搭配。

# 示例1:分析Nginx日志,提取访问IP并统计出现次数(grep+cut+sort+uniq)grep-o"\b[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\b"access.log|cut-c1-15|sort|uniq-c# 示例2:截取系统用户的用户名(/etc/passwd冒号分隔,第1列)并排序cat/etc/passwd|cut-d":"-f1|sort# 示例3:截取ls -lh的文件大小(5列)和文件名(9列),按大小排序ls-lh|cut-d" "-f5,9|sort-h# 示例4:反向截取,过滤掉日志中的时间列(假设时间在1-20字符)catapp.log|cut-c1-20 --complement

十、关键注意事项

  1. 分隔符限制-d仅支持单个字符分隔符,多字符分隔(如##|||)需用awk替代;
  2. 连续分隔符cut会将连续的分隔符视为多个分隔符(如两个空格会被识别为两个分隔符,导致列错位),需先用tr -s ' '压缩为单个分隔符:
    # 压缩连续空格为单个,再截取列catfile.txt|tr-s' '|cut-d" "-f2
  3. 中文处理:优先用-c(字符模式),-b(字节模式)处理中文会乱码;
  4. 制表符默认:列模式下,若不指定-d,默认分隔符为制表符\t(不是空格);
  5. 空行处理:会正常截取空行,若需过滤,可先用grep -v "^$"过滤空行。

十一、总结

cutLinux轻量文本截取神器,核心价值是用极简语法快速提取文本的列/字符,无需复杂的脚本或工具,是处理结构化文本的基础命令,其核心要点可总结为:

  1. 三大模式:字符-c(通用推荐)、字节-b(纯英文)、列-f(结构化文本,配合-d);
  2. 范围表示:单个N、连续N-M、到末尾N-、从开头-M、不连续N,M,通用所有模式;
  3. 反向截取--complement,过滤指定列/字符;
  4. 工具边界:简单截取用cut,复杂处理(多分隔符、条件、计算)用awk
  5. 经典组合:与grep(过滤)、sort(排序)、uniq(去重)搭配,实现完整文本处理。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 15:13:35

Linux 命令:tr

概述 tr 命令,这个命令是字符转换/替换/删除工具,核心作用是对文本中的单个字符进行批量处理——包括字符替换、大小写转换、删除指定字符、压缩重复字符等,特点是轻量、高效、仅处理单个字符,是文本字符级处理的基础工具。 资料…

作者头像 李华
网站建设 2026/4/4 3:17:37

家居安防(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:HJJ-32-2021-016设计简介:本设计是基于物联网智能家居系统的设计,主要实现以下功能:可采集空气湿度,实现自动…

作者头像 李华
网站建设 2026/3/28 21:02:28

Markmap-tool-service工具使用问题

C:\Users\Administrator>curl http://localhost:5001/upload curl: (52) Empty reply from server curl: (52) Empty reply from server 错误表明客户端成功连接到了服务器(localhost:5001),但服务器在响应时返回了空数据,这通常意味着服务内部存在问题。以下是可能的原…

作者头像 李华
网站建设 2026/3/23 11:08:13

4K画质+稳如磐石!Veo 3.1助力AI漫剧突破创作瓶颈,一步API极速接入

AI漫剧行业正处于高速发展的黄金期,但画质粗糙、生成不稳定、人物形象崩坏等问题一直是制约行业高质量发展的关键。Google Veo 3.1模型4K高清能力的正式开放,为行业带来了颠覆性转机。国内领先的企业级AI解决方案平台一步API第一时间完成技术对接并上线该…

作者头像 李华