cut
cut 是一个常用的 Linux/Unix 命令行工具,主要用于按列或字段提取文本数据,尤其适用于结构化文本,如 CSV 文件、日志文件、系统输出等。
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,grapedog,cat,bird,fishlinux,windows,macos,unix
-- passwd.txt --root:x:0:0:root:/root:/bin/bashuser:x:1000:1000:User:/home/user:/bin/bash1. 按字段提取
cut -d',' -f2 data.txt输出:
bananacatwindows2. 使用其他分隔符
cut -d':' -f1,6 passwd.txt输出:
root:/rootuser:/home/user3. 按字符提取
echo "HelloWorld" | cut -c1-5输出:
Hello4. 输出未被选中字段(--complement)
cut -d',' -f1 --complement data.txt输出:
banana,orange,grapecat,bird,fishwindows,macos,unix效果就是去掉第 1 个字段
5. 改变输出字段的分隔符
cut -d',' -f2,3 --output-delimiter=' | ' data.txt输出:
banana | orangecat | birdwindows | macosman cut- GNU Coreutils - cut