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