文件查看编辑命令 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
经常与 grep
、sort
、uniq
等命令配合使用,进行快速数据处理。
# 先查找包含 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