我有一个名为 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
关键部分是“还打印任何不包含分隔符的行”。这就是您所拥有的:文件中的每一行都包含“无分隔符”。