跳转到内容

Cut

100% developed
来自维基教科书,开放的书籍,开放的世界

Cut 是一种在许多平台上可用的 Unix 命令行工具,用于从输入行中提取字段等。

Cut 的命令行选项又称开关

  • -clist: 显示行的选定字符。
  • -flist: 显示行的选定字段,默认情况下以制表符分隔。
  • -dchar: 将字段分隔符从制表符切换到 char
  • -s: 不显示(“抑制”)不包含字段分隔符的行。

某些版本的 cut 的命令行选项又称开关

  • -b: 显示行的选定字节。
  • -n: 不分割多字节字符。

Cut 使用示例

  • cut -f1 file.txt
    • 显示每行的第一个字段,使用制表符作为字段分隔符。
  • echo a:b | cut -d: -f2
    • 显示每行的第二个字段,使用冒号作为字段分隔符。
  • echo a b c | cut -d" " -f1,3
  • echo a b c d e | cut -d" " -f1-3,5
  • echo a b c | cut -d" " -f3,2,1
    • 输出 "a b c",忽略 -f 之后反转的顺序。
  • echo a b c d | cut -d" " -f2-
    • 输出第二个和所有后续字段,即 "b c d"。
  • echo abcd | cut -c3,4
    • 不按字段处理,而是按字符处理。因此,输出 "cd"。
  • echo abcdefgh | cut -c1-3,6-8
    • 输出 abcfgh

Cut 领域中类似工具的使用示例

  • echo a  b|awk '{print $2}'
    • 显示 "b",以任意数量的制表符或空格分隔字段。因此,对于 awk,"b" 是第二个字段,而对于 cut -d" ","b" 是第三个字段。
  • echo a  b|awk '{print $2 $1}'
    • 显示 "ba",保留字段指定的顺序。
  • echo a  b|sed "s/  */ /g" |cut -f2 -d" "
    • 显示 "b"。使用 sed 将空格序列首先压缩成单个空格。

局限性

[编辑 | 编辑源代码]

Cut 受以下限制

  • 无法指定“一个或多个空格”或类似的字段分隔符。
  • 无法更改输出中字段的顺序。

注意:有些人发现 awk 或 gawk 能够满足 cut 限制过于严格的需求。

GNU cut for MS Windows 的版本可从 GnuWin32 项目 以及 Cygwin 获取。

[编辑 | 编辑源代码]
华夏公益教科书