cut
是 Linux 中一个用于从文本文件或标准输入中提取指定字段的命令。它根据分隔符或者字符位置来裁剪文本,是处理文本文件中的字段、列和子字符串的常用工具。
基本语法
cut [选项] 文件
或
命令 | cut [选项]
常用选项
-b
:按字节位置切割(指定字节范围)。-c
:按字符位置切割(指定字符范围)。-d
:指定字段分隔符(默认是制表符\t
)。-f
:指定要显示的字段(结合-d
选项使用)。--complement
:显示指定范围之外的字段或字符。
1. 按字符位置切割
假设有一个包含多行文本的文件 file.txt
:
abcdef
123456
xyzabc
- 提取第 1 到 3 个字符:
输出:cut -c 1-3 file.txt
abc 123 xyz
2. 按字段分隔符切割
假设文件 data.txt
内容如下:
name,age,location
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
-
使用
,
作为分隔符,提取第 1 和第 3 列:cut -d ',' -f 1,3 data.txt
输出:
name,location Alice,New York Bob,Los Angeles Charlie,Chicago
-
提取除第 2 列之外的字段:
cut -d ',' -f 2 --complement data.txt
输出:
name,location Alice,New York Bob,Los Angeles Charlie,Chicago
3. 从标准输入提取字段
- 从
echo
输出中提取第一个字段:
输出:echo "apple orange banana" | cut -d ' ' -f 1
apple
4. 按字节位置切割
假设文件 file.txt
内容为:
abcdefgh
12345678
xyzabcde
- 提取第 1 到 4 个字节:
输出:cut -b 1-4 file.txt
abcd 1234 xyza
5. 结合其他命令使用
- 使用
ps
命令并结合cut
提取某一列:
这将提取ps aux | cut -d ' ' -f 1
ps
命令输出的第 1 列,即用户信息。
6. 处理多字符分隔符
cut
不支持多字符分隔符的直接处理,若需要处理多字符分隔符,可使用 awk
或 sed
:
echo "apple##orange##banana" | awk -F '##' '{print $1, $3}'
总结
cut
命令非常适合快速从文件中提取字段或列,尤其适合以单字符分隔符(如逗号、空格)分隔的结构化文本数据。结合其他命令管道使用,能够高效处理系统输出或文件内容。