cut 命令

用途

帮助分割文件的行。

语法

-b 列表 -n ] |  -c 列表 -f 列表 -s ] [  -d 字符 ] } [ 文件 ... ]

描述

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。

必须指定 -b-c, 或 -f 标志。 List 参数为一个以逗号分隔、以空格分隔或连字符分隔的整数的列表(顺序递增)。 连字符分隔符表示范围。 以下条目是 List 参数的一些示例,它可以用来指代字节、字符或字段:

1,4,7
1-3,8
-5,10
3-

其中-5是第一个到第五个和3-是第三个到最后一个的短格式。

如果将 cut 命令用于字段,那么由 List 参数指定的字段的长度可以从字段到字段,从行到行发生变化。 字段定界字符(比如制表符)的位置,确定字段长度。

您还可以使用 grep 命令来对一个文件进行水平剪切,和使用 paste 命令来将文件复原。 要更改文件中列的次序,使用 cutpaste 命令。

标志

描述
-b 列表 指定字节位置。 除非还指定了 -n 标志,否则这些字节位置将忽略多字节字符边界。
-c 列表 指定字符位置。 例如,如果指定-c 1-72,cut 命令在文件的每行中写出前 72 个字符。
-d 字符 当指定 -f 标志时,使用 Character 变量指定的字符作为字段定界符。 您必须在对 shell 有特殊意义的字符(比如空格字符)上加上引号。
-f 列表 指定文件中设想被定界字符(缺省情况下为制表符)隔开的字段的列表。 例如,如果指定-f 1,7,cut 命令只写出每一行的第一个和第七个字段。 如果行不包含字段定界符,那么除非指定 -s 标志,否则 cut 命令会完整地传递它们 (对表子标题有用)。
-n 取消分割多字节字符。 仅与 -b 标志一起使用。 如果字符的最后一个字节位于由 -b 标志的 List 变量表示的范围内,那么将写入该字符; 否则,将排除该字符。
-s 取消不包含定界符的行。 仅与 -f 标志一起使用。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 所有输入文件被成功输出。
> 0 发生错误。

示例

  1. 要显示文件的每行中的几个字段,请输入:
    cut  -f 1,5 -d : /etc/passwd
    这将显示系统密码文件的登录名称和完整用户名称字段。 这些是第一个和第五个字段 (-f 1,5) 用冒号分隔 (-d :).

    例如,如果 /etc/passwd 文件像这样:

    su:*:0:0:User with special privileges:/:/usr/bin/sh
    daemon:*:1:1::/etc:
    bin:*:2:2::/usr/bin:
    sys:*:3:3::/usr/src:
    adm:*:4:4:System Administrator:/var/adm:/usr/bin/sh
    pierre:*:200:200:Pierre Harper:/home/pierre:/usr/bin/sh
    joan:*:202:200:Joan Brown:/home/joan:/usr/bin/sh
    cut 命令将产生如下结果:
    su:User with special privileges
    daemon:
    bin:
    sys:
    adm:System Administrator
    pierre:Pierre Harper
    joan:Joan Brown
  2. 要使用以空格分隔的列表显示字段,请输入:
    cut -f "1 2 3" -d : /etc/passwd
    cut 命令将产生如下结果:
    su:*:0
    daemon:*:1
    bin:*:2
    sys:*:3
    adm:*:4
    pierre:*:200
    joan:*:202

文件

描述
/usr/bin/cut 包含 cut 命令。