Skip to main content

Linux 核心命令

文件查看编辑命令 cut

cut 是 Linux 中用来按列(字段)或者按字符位置提取文本内容的命令,非常适合处理表格数据、日志文件等。它可以基于分隔符来提取某些字段,也可以按照固定字符位置来截取内容。

1. 按字符位置截取内容

如果你的数据是固定列宽,可以用 -c 参数按字符位置提取。

# 提取第 1 个字符
cut -c 1 file.txt

# 提取第 1 到第 5 个字符
cut -c 1-5 file.txt

# 提取第 1 到第 5 个字符,以及第 8 个字符
cut -c 1-5,8 file.txt

2. 按分隔符提取字段

默认情况下,cut 会按 TAB 分隔字段,如果要用其他分隔符,比如逗号、空格等,需要加 -d 参数。

# 按逗号分隔,取第 1 个字段
cut -d ',' -f 1 file.txt

# 按冒号分隔,取第 2 个字段
cut -d ':' -f 2 file.txt

# 按空格分隔,取第 1 和第 3 个字段
cut -d ' ' -f 1,3 file.txt

3. 提取多个连续字段

字段范围可以用 - 连接,连续和不连续都可以混合使用。

# 取第 2 到第 5 个字段
cut -d ',' -f 2-5 file.txt

# 取第 1 到第 3 个字段,以及第 6 个字段
cut -d ',' -f 1-3,6 file.txt

4. 从标准输入读取数据

cut 不一定要处理文件,也可以直接处理管道传过来的数据。

# 从 echo 输出中提取
echo "apple orange banana" | cut -d ' ' -f 2

# 从 cat 输出中提取
cat file.txt | cut -d ',' -f 1

5. 结合其他命令使用

cut 经常与 grepsortuniq 等命令配合使用,进行快速数据处理。

# 先查找包含 keyword 的行,再取第 2 个字段
grep "keyword" file.txt | cut -d ':' -f 2

# 按制表符分隔取第 3 列,再去重排序
cut -f 3 file.txt | sort | uniq

6. 按字节截取内容

有时候数据是固定字节宽度,可以用 -b 按字节截取(和 -c 类似,但 -c 是按字符)。

# 提取第 1 到第 5 个字节
cut -b 1-5 file.txt

7. 按 TAB 作为默认分隔符提取

如果你的数据是制表符(\t)分隔,可以直接用 -f,不需要 -d

# 取第 1 个字段(默认 TAB 分隔)
cut -f 1 file.txt

8. 结合 tr 处理特殊分隔符

如果文件分隔符比较奇怪,可以先用 tr 转成标准分隔符再用 cut

# 将 | 转换为逗号,再提取第 2 个字段
cat file.txt | tr '|' ',' | cut -d ',' -f 2