| Parameter | Details |
|---|---|
-f, --fields |
基于字段选择 |
-d, --delimiter |
基于字段选择的分隔符 |
-c, --characters |
基于字符的选择,分隔符被忽略或出错 |
-s, --only-delimited |
忽略没有分隔符的行(否则按原样打印) |
--complement |
反向选择(提取指定字段/字符以外的所有内容) |
--output-delimiter |
指定何时必须与输入分隔符不同 |
cut 命令是提取文本文件中部分行内容的快速方法。它属于最古老的 Unix 命令。它最流行的实现是 Linux 上的 GNU 版本和 MacOS 上的 FreeBSD 版本,但每种 Unix 都有自己的版本。差异见下文。输入行可以从 stdin 或命令行参数中列出的文件中读取。
Section 55.1: 只有一个分隔符
分隔符不能多于一个:如果您指定类似 -d “,;:” 的分隔符,某些实现将只使用第一个字符作为分隔符(在本例中为逗号。)其他实现(例如 GNU cut)将给出错误信息。
$ cut -d ",;:" -f2 <<<"J.Smith,1 Main Road,cell:1234567890;land:4081234567"
cut: the delimiter must be a single character
Try `cut --help' for more information.
Section 55.2: 重复的分隔符被解释为空字段
$ cut -d, -f1,3 <<<"a,,b,c,d,e"
a,b
是相当明显的,但对于以空格为分隔符的字符串,有些人可能就不那么明显了
$ cut -d ' ' -f1,3 <<<"a b c d e"
a b
cut 不能像 shell 和其他程序那样用来解析参数。
Section 55.3: 没有引用
没有办法保护分隔符。电子表格和类似的 CSV 处理软件通常可以识别文本引号字符,从而可以定义包含分隔符的字符串。而剪切则不行。
$ cut -d, -f3 <<<'John,Smith,"1, Main Street"'
"1
Section 55.4: 提取,而不是操纵
只能提取行的部分内容,不能重新排序或重复字段。
$ cut -d, -f2,1 <<<'John,Smith,USA' ## Just like -f1,2
John,Smith
$ cut -d, -f2,2 <<<'John,Smith,USA' ## Just like -f2
Smith