插件窝 干货文章 Linux cut命令怎么使用

Linux cut命令怎么使用

提取 分隔符 字段 cut 228    来源:    2025-04-25

cut 是 Linux 中一个用于按列或字段提取文本内容的实用命令,特别适合处理结构化数据(如 CSV、日志等)。以下是详细用法和示例:


基本语法

cut [选项] [文件]

核心选项

  1. 按列提取 (-c)
    指定字符位置(列号),从 1 开始计数:

    cut -c 1-5 file.txt    # 提取每行第1到5个字符
    cut -c 2,5,7 file.txt  # 提取第2、5、7个字符
    
  2. 按字段提取 (-f)
    需配合分隔符使用(默认分隔符为 TAB):

    cut -d ',' -f 1,3 file.csv  # 提取逗号分隔的第1和第3字段
    
  3. 指定分隔符 (-d)
    -f 配合使用,定义字段分隔符:

    cut -d ':' -f 1 /etc/passwd  # 提取用户名(冒号分隔的第1字段)
    

常用示例

  1. 提取文件前N个字符

    cut -c 1-10 access.log  # 每行前10个字符
    
  2. 提取CSV的特定列

    cut -d ',' -f 2-4 data.csv  # 第2到4列(逗号分隔)
    
  3. 结合管道处理其他命令输出

    echo "hello:world:linux" | cut -d ':' -f 2
    # 输出:world
    
  4. 排除换行符(补全行)

    cut -d ':' -f 1 --complement /etc/passwd  # 提取除第1字段外的所有内容
    

注意事项

  • 若字段分隔符不存在,cut 会输出整行(除非用 -s 静默无分隔符的行)。
  • 不支持正则表达式,复杂文本处理建议用 awksed
  • 列号和字段号从 1 开始计数。

awk 的简单对比

场景 cut awk
按固定列提取 cut -c 1-5 awk '{print substr($0,1,5)}'
按分隔符提取字段 cut -d ',' -f 2 awk -F',' '{print $2}'
条件过滤 不支持 awk '$2 > 10 {print $1}'

进阶技巧

  • 提取多个不连续范围
    bash cut -d ' ' -f 1,3-5,7 file.txt
  • 从标准输入读取
    bash cat file.txt | cut -c 1-3

掌握 cut 可以高效处理列式数据,但更复杂的操作建议结合 awkgrep