当前位置:首页>Linux>Linux入门必学|cut命令:精准提取文本的“万能剪刀”

Linux入门必学|cut命令:精准提取文本的“万能剪刀”

  • 2026-09-03 00:09:52
Linux入门必学|cut命令:精准提取文本的“万能剪刀”
cut是Linux运维必备基础命令,像一把精准的“文本剪刀”,能快速从文件、管道输出中提取内容,不用复杂操作,新手也能快速上手。
一、核心认知:cut命令作用
核心作用:按“列”或“字符”截取文本,默认以制表符(Tab)为分隔符,可自定义单个分隔符(空格、逗号、冒号等)。一般用于提取配置/日志关键信息、格式化命令输出。
基本语法:
cut [选项] 文件名/管道输入
二、3个核心参数
cut常用选项仅3个,搭配使用可覆盖绝大多数场景:
  1. 按“列”提取:-d 和-f
-d:指定单个分隔符(默认Tab,不可直接用空格);
-f:指定提取列(单个/多个/连续列)。
1.提取/etc/passwd的用户名(第1列)、用户名+家目录(1、6列)。
cut -d ":" -f 1 /etc/passwd  # 第1列(用户名)cut -d ":" -f 1,6 /etc/passwd  # 第1、6列(用户名+家目录)
2. 按字符提取:-c
按字符位置提取,不看分隔符,适合文本格式固定的场景。
cut -c 1-5 /etc/passwd  #提取每行前5个字符cut -c 3 /etc/passwd     #提取每行第3个字符
3. 补充选项:--complement(反向提取)
排除指定列/字符,实用且高效。
cut -d ":" -f 2 --complement /etc/passwd  # 排除第2列(密码列)
三、3个避坑选项
  • 1:不可直接用空格当分隔符,需用tr -s " " 压缩空格后再提取;
  • 2:分隔符只能是单个字符,不可用“::”“,-”等多字符;
  • 3:提取列数超出范围不报错,仅输出空行,需先确认文件列数。
空格分隔正确示例(提取ls -l文件名):
ls -l | tr -s " " | cut -d " " -f 9
四、3个高频实战场景
场景1:提取日志IP(空格分隔,第2列)
cat log.log | tr -s " " | cut -d " " -f 2
场景2:提取普通用户(ID>1000)
cat /etc/passwd |cut -d ":" -f 1,3 |grep -E ":([1-9][0-9]{3,})"
grep -E ":([1-9][0-9]{3,})"  #启用正则匹配 ,冒号后面地位非0,后面0-9中连续匹配三次
grep -E 后面命令的核心作用是匹配包含冒号后紧跟 4 位及以上数字(且首位非 0)的行。
场景3:格式化ps输出(提取进程ID+进程名)
 ps -ef |tr -s " " |cut -d " " -f 2,8
五、cut与awk对比
很多人会混淆cut和awk,其实两者都能提取文本,但定位不同,用对场景更高效:
  • cut:专注“简单截取”,仅按“列(单个分隔符)”或“字符”提取,语法简单、执行高效,适合基础提取场景;
  • awk:功能更强大,支持多字符分隔符、条件过滤、文本修改,可实现“提取+处理”一站式操作,但语法稍复杂。
场景选择:基础提取(单分隔符、固定字符)用cut;多分隔符、需过滤/处理文本用awk。
多分隔符提取,cut做不到,awk可实现:
文本分隔符是“::”,提取第1列
awk -F "::" '{print $1}' 222.txt
六、总结
cut核心是精准、简单,记住3个核心选项(-d/-f/-c),避开3个坑,就能应对日常80%的文本提取需求。它的优点是轻量高效,缺点是不支持多字符分隔符,此时可切换到awk。建议动手用/etc/passwd实操,记得更牢!
#运维#linux运维#cut截取

最新文章

随机文章