为什么此 cut 命令需要 -d 选项?

为什么此 cut 命令需要 -d 选项?

我有一个名为 sales.txt 的 txt 文件

Fred apples 20 April 4
Susy oranges 5 April 7
Mark watermelons 12 April 10
Terry peaches 7 April 15

当我使用这个命令时:

[root@ip-10-0-7-125 bash-tut]# cat sales.txt | cat /dev/stdin | cut -d' ' -f 2,3 | sort
20 April
oranges 5
peaches 7
watermelons 12

关键是如果我删除 -d' ' 部分,我就得到了文本文件的所有字段。

[root@ip-10-0-7-125 bash-tut]# cat sales.txt | cat /dev/stdin | cut -f 2,3 | sort
Mark watermelons 12 April 10
pples 20 April 4
Susy oranges 5 April 7
Terry peaches 7 April 15
[root@ip-10-0-7-125 bash-tut]# man cut

为什么会这样?我在手册页上查找 d 选项,它说:-d 只是表示字段分隔符。

答案1

我系统上的手册页显示:

   -d, --delimiter=DELIM
          use DELIM instead of TAB for field delimiter

因此,如果您不指定-d,则假定您的字段由字符cut分隔。TAB您的输入文件不包含任何TAB字符。同时,手册页还说:

   -f, --fields=LIST
          select only these fields;  also print any line that contains  no
          delimiter character, unless the -s option is specified

关键部分是“还打印任何不包含分隔符的行”。这就是您所拥有的:文件中的每一行都包含“无分隔符”。

相关内容