cut
是 Linux 中一个用于按列或字段提取文本内容的实用命令,特别适合处理结构化数据(如 CSV、日志等)。以下是详细用法和示例:
cut [选项] [文件]
按列提取 (-c
)
指定字符位置(列号),从 1 开始计数:
cut -c 1-5 file.txt # 提取每行第1到5个字符
cut -c 2,5,7 file.txt # 提取第2、5、7个字符
按字段提取 (-f
)
需配合分隔符使用(默认分隔符为 TAB
):
cut -d ',' -f 1,3 file.csv # 提取逗号分隔的第1和第3字段
指定分隔符 (-d
)
与 -f
配合使用,定义字段分隔符:
cut -d ':' -f 1 /etc/passwd # 提取用户名(冒号分隔的第1字段)
提取文件前N个字符
cut -c 1-10 access.log # 每行前10个字符
提取CSV的特定列
cut -d ',' -f 2-4 data.csv # 第2到4列(逗号分隔)
结合管道处理其他命令输出
echo "hello:world:linux" | cut -d ':' -f 2
# 输出:world
排除换行符(补全行)
cut -d ':' -f 1 --complement /etc/passwd # 提取除第1字段外的所有内容
cut
会输出整行(除非用 -s
静默无分隔符的行)。awk
或 sed
。awk
的简单对比场景 | cut |
awk |
---|---|---|
按固定列提取 | cut -c 1-5 |
awk '{print substr($0,1,5)}' |
按分隔符提取字段 | cut -d ',' -f 2 |
awk -F',' '{print $2}' |
条件过滤 | 不支持 | awk '$2 > 10 {print $1}' |
bash
cut -d ' ' -f 1,3-5,7 file.txt
bash
cat file.txt | cut -c 1-3
掌握 cut
可以高效处理列式数据,但更复杂的操作建议结合 awk
或 grep
。