跳转到内容

cut

cut 是一个常用的 Linux/Unix 命令行工具,主要用于按列或字段提取文本数据,尤其适用于结构化文本,如 CSV 文件、日志文件、系统输出等。

Terminal window
cut [选项] [文件...]

如果不指定文件,则默认从标准输入读取数据

选项 说明
-b <字节范围> 按字节提取(适用于 ASCII 文本,不推荐用于含多字节字符如中文的情况)
-c <字符范围> 按字符提取(推荐用于精确截取位置)
-f <字段范围> 按字段提取(必须配合 -d 指定分隔符)
-d <字符> 指定字段分隔符(默认为制表符 Tab)
--complement 取反,即输出未被选中的部分
--output-delimiter=STRING 指定输出字段之间的分隔符(默认与输入相同)
--help 查看帮助
--version 查看版本信息

范围的写法:

  • N:第 N 个(如 -f 3 表示第 3 个字段)
  • N,M,...:第 N 个、第 M 个等(如 -f 3,4 表示第 3、第 4 个字段)
  • N-M:第 N 到 M 个(如 -f 2-4 表示第 2 至第 4 个字段)
  • -M:从第 1 到第 M 个
  • N-:从第 N 个到最后

示例数据:

-- data.txt --
apple,banana,orange,grape
dog,cat,bird,fish
linux,windows,macos,unix
-- passwd.txt --
root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:User:/home/user:/bin/bash

1. 按字段提取

Terminal window
cut -d',' -f2 data.txt

输出:

banana
cat
windows

2. 使用其他分隔符

Terminal window
cut -d':' -f1,6 passwd.txt

输出:

root:/root
user:/home/user

3. 按字符提取

Terminal window
echo "HelloWorld" | cut -c1-5

输出:

Hello

4. 输出未被选中字段(--complement)

Terminal window
cut -d',' -f1 --complement data.txt

输出:

banana,orange,grape
cat,bird,fish
windows,macos,unix

效果就是去掉第 1 个字段

5. 改变输出字段的分隔符

Terminal window
cut -d',' -f2,3 --output-delimiter=' | ' data.txt

输出:

banana | orange
cat | bird
windows | macos