ANALYSIS
Linux 每日一篇 - 38 - cut
Linux 文本截取神器!掌握 cut 命令,轻松提取文本字段,让数据处理更高效!
cut 命令是什么?
cut 命令是 Linux 中用于从文本文件的每一行中提取指定字段或字符的工具。它可以按字节、字符或字段(以分隔符分隔)来截取文本内容,是数据处理和文本分析的重要工具。
基本用法
PRTCL // PLAINTEXT
# 按字节提取(-b 选项)cut -b 1-5 filename # 提取第 1 到第 5 字节cut -b 1,3,5 filename # 提取第 1、3、5 字节cut -b 3- filename # 提取第 3 字节及之后的所有字节
# 按字符提取(-c 选项)cut -c 1-10 filename # 提取第 1 到第 10 个字符cut -c 2,5,8 filename # 提取第 2、5、8 个字符cut -c 5- filename # 提取第 5 个字符及之后的所有字符
# 按字段提取(-f 选项,配合-d 指定分隔符)cut -f 2 -d ':' filename # 按冒号分割,提取第 2 个字段cut -f 1,3 -d ',' filename # 按逗号分割,提取第 1 和第 3 个字段cut -f 2-4 -d ' ' filename # 按空格分割,提取第 2 到第 4 个字段cut -f 3- -d ':' filename # 提取第 3 个字段及之后的所有字段
# 指定分隔符(-d 选项)cut -f 2 -d '|' filename # 使用竖线作为分隔符cut -f 1 -d $'\t' filename # 使用制表符作为分隔符实用技巧
PRTCL // PLAINTEXT
# 提取多个不连续的字段cut -f 1,3,5 -d ':' /etc/passwd
# 提取连续的多个字段cut -f 2-5 -d ',' data.csv
# 从命令输出中提取特定字段ps aux | cut -d ' ' -f 11 # 提取进程命令df -h | cut -d ' ' -f 1 # 提取磁盘设备名
# 提取文件名和扩展名ls -la | cut -d ' ' -f 9 # 提取文件名(需要进一步处理)
# 提取 IP 地址ifconfig | grep "inet " | cut -d ' ' -f 10
# 提取用户名(从 passwd 文件)cut -d ':' -f 1 /etc/passwd
# 提取用户 IDcut -d ':' -f 3 /etc/passwd
# 处理 CSV 文件cut -d ',' -f 2,4,6 data.csv
# 提取特定范围的字符echo "Hello World" | cut -c 1-5 # 输出 "Hello"
# 从路径中提取文件名echo "/path/to/file.txt" | cut -d '/' -f 4
# 组合使用其他命令grep "root" /etc/passwd | cut -d ':' -f 1,3,4
# 提取文件的扩展名部分ls *.txt | cut -d '.' -f 1常用场景
PRTCL // PLAINTEXT
# 从 passwd 文件中提取信息cut -d ':' -f 1 /etc/passwd # 用户名列表cut -d ':' -f 1,3 /etc/passwd # 用户名和用户 IDcut -d ':' -f 5 /etc/passwd # 用户全名
# 处理日志文件cut -d ' ' -f 1 access.log # 提取 IP 地址cut -d ' ' -f 4-5 access.log # 提取请求时间和时区cut -d ' ' -f 7 access.log # 提取请求路径
# 分析 CSV 数据cut -d ',' -f 1,3 customers.csv # 提取客户名和邮箱
# 系统管理任务ps aux | cut -d ' ' -f 1 # 提取进程用户ps aux | cut -d ' ' -f 2 # 提取进程 IDw | cut -d ' ' -f 1 # 提取当前登录用户
# 提取特定信息mount | cut -d ' ' -f 1 # 提取挂载的设备df -h | cut -d ' ' -f 1,5 # 提取设备和使用率
# 从路径中提取部分pwd | cut -d '/' -f 4 # 提取当前目录名(取决于路径深度)
# 处理网络信息netstat -tuln | cut -d ' ' -f 7 # 提取服务名称高级用法
PRTCL // PLAINTEXT
# 使用多个分隔符(需要借助其他工具)# 用 awk 替代 cut 实现复杂分割awk -F '[,;:]' '{print $1, $3}' file.txt
# 提取变化位置的字段# 当分隔符位置不固定时,使用 awk 更灵活awk -F: '{print $1, $3}' /etc/passwd
# 条件提取# 结合 grep 和 cutgrep "bash" /etc/passwd | cut -d ':' -f 1
# 处理多字符分隔符# 使用 awk 处理多字符分隔符awk -F'END' '{print $1}' file.txt
# 提取字段的子串# 先用 cut 提取字段,再用其他工具处理echo "john:20:engineer" | cut -d ':' -f 1 | cut -c 1-2 # 输出 jo
# 在脚本中使用#!/bin/bash# 从配置文件中提取特定值config_value=$(grep "^key=" config.conf | cut -d '=' -f 2)
# 处理表格数据# 显示表格的特定列cat table.txt | cut -c 1-10,20-30,40-50 # 提取 1-10,20-30,40-50 列
# 结合其他命令进行复杂处理sort -t ':' -k 3,3n /etc/passwd | cut -d ':' -f 1 # 按 ID 排序后提取用户名实际应用示例
PRTCL // PLAINTEXT
# 示例 1: 处理学生信息表(格式:姓名:年龄:班级:分数)# 提取姓名和班级cut -d ':' -f 1,3 students.txt
# 示例 2: 分析网站日志# 提取访问者 IP 和访问时间cut -d ' ' -f 1,4-5 access.log
# 示例 3: 处理用户列表# 提取系统用户(UID < 1000)awk -F: '$3 < 1000 {print $1}' /etc/passwd
# 示例 4: 处理 CSV 文件# 提取前 3 列cut -d ',' -f 1-3 data.csv
# 示例 5: 系统监控# 提取 CPU 使用率top -b -n 1 | head -5 | tail -1 | tr -s ' ' | cut -d ' ' -f 3
# 示例 6: 处理程序输出# 从 df 命令输出中提取使用率df -h | grep -v "Filesystem" | tr -s ' ' | cut -d ' ' -f 5
# 示例 7: 数据清洗# 从文本中提取邮箱地址的一部分grep "@" userlist.txt | cut -d '@' -f 1与相关命令的配合
PRTCL // PLAINTEXT
# cut 与 awk 的比较和选择:# cut 适合简单的字段提取cut -d ':' -f 1 /etc/passwd# awk 功能更强,适合复杂处理awk -F: '$3 > 1000 {print $1}' /etc/passwd
# cut 与 grep 的配合:grep "root" /etc/passwd | cut -d ':' -f 1,3
# cut 与 sort 的配合:cut -d ':' -f 1 /etc/passwd | sort
# cut 与 uniq 的配合:cut -d ' ' -f 1 access.log | sort | uniq -c
# cut 与 tr 的配合:# 处理空格不规则的情况cat file.txt | tr -s ' ' | cut -d ' ' -f 2注意事项
PRTCL // PLAINTEXT
# cut 按字节处理时,对于多字节字符(如中文)可能会截断字符# -d 选项的分隔符只能是单个字符# 当行中字段数少于指定字段号时,cut 不会输出任何内容# cut 不会保留原分隔符,输出字段间以制表符分隔# 使用-c 选项处理多字节字符更安全# 对于复杂的分隔符,考虑使用 awk 命令# 当字段位置不固定时,使用字符位置提取可能更合适抖音文案
🎯 Linuxcut 命令!
✅ 基本用法:cut ✅ 常用参数:cut -option ✅ 实用技巧:cut —help
每天一个 Linux 命令,30 天变身 Linux 高手!
#Linux 入门 #Shell 命令 #程序员必备 #技术分享
关于我
全平台同名”汪多多是只猫”,专注分享实用技术教程,让你的 IT 学习之路更轻松!
关注我,每天一个 Linux 命令,轻松入门 Linux 系统!
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.08
Auth_Verified: 2026.04.08
