cut命令

cut 是 Linux 中一个常用的文本处理命令,用来从文本文件或标准输入中提取指定的字段、字符或字节。它通常与其他命令(如 grepawk 等)结合使用,用于处理和过滤文本数据。

cut 命令的基本语法

cut OPTION [FILE...]

常用选项:

  • -f:指定要提取的字段(基于分隔符)。
  • -d:指定分隔符,默认是制表符(Tab)。
  • -b:按字节提取内容。
  • -c:按字符提取内容。
  • --complement:显示不在指定范围内的内容。

cut 命令常用示例

1. 按字段提取

假设有一个以逗号分隔的 CSV 文件 data.csv,内容如下:

name,age,gender
Alice,30,Female
Bob,25,Male
Charlie,35,Male

提取第 1 列(name 列)

cut -d',' -f1 data.csv

输出:

name
Alice
Bob
Charlie

提取第 2 列和第 3 列(age 和 gender 列)

cut -d',' -f2,3 data.csv

输出:

age,gender
30,Female
25,Male
35,Male

2. 按字符提取

可以使用 -c 选项按字符提取。假设有一个文件 names.txt,内容如下:

Alice
Bob
Charlie

提取前 3 个字符

cut -c1-3 names.txt

输出:

Ali
Bob
Cha

3. 按字节提取

-b 选项是基于字节的提取,但要注意字节与字符的区别,尤其在 UTF-8 等多字节编码中。对于纯 ASCII 文本,字符和字节可以视为一致。

假设文件 data.txt 内容为:

abcdefg
hijklmn

提取第 2 到第 4 个字节

cut -b2-4 data.txt

输出:

bcd
ijk

4. 提取指定列之外的字段

使用 --complement 选项可以显示除指定列之外的内容。

显示除第 1 列之外的内容

cut -d',' -f1 --complement data.csv

输出:

age,gender
30,Female
25,Male
35,Male