做什么

按"字符位置"或"分隔符 + 字段号"截取列。比 awk 简单、比 awk 快——固定格式用 cut 更顺手。

常用参数

参数 含义
-d 'X' 用 X 作为分隔符
-f N 第 N 个字段
-f N-M 第 N 到 M 个字段
-c N 第 N 个字符
-c N-M 第 N 到 M 个字符
--complement 反选(除了指定的)

实战

按字段(最常用)

# /etc/passwd 用 : 分隔
cut -d: -f1 /etc/passwd               # 第 1 列(用户名)
cut -d: -f1,6 /etc/passwd             # 第 1 和 6 列
cut -d: -f1-3 /etc/passwd             # 第 1-3 列

# CSV
cut -d',' -f2 data.csv

# Tab 分隔(默认)
cut -f1 tabular.tsv

按字符位置

date | cut -c1-3                      # 取前 3 字符(如 "Fri")
cut -c1-5 file.txt                    # 每行前 5 个字符

cut vs awk

场景
固定分隔符 + 取列 cut(简单快)
多空白分隔 awk(cut 不擅长)
涉及计算 / 条件 awk
简单截字符串 cut -c 或 bash 参数展开

  • cut 对多个连续空格处理差——文本中 之间的空字段会被算作字段
  • 如果分隔符是 Tab,用 -d $'\t' 或不带 -d(默认就是 Tab)
  • cut 不能改顺序——-f3,1 实际还是按 1,3 顺序输出