我正在运行 bash 脚本,执行以下操作:
cut -d ' ' -f2 <<< "aaa bbb"
得到结果:
bbb
如果有多个空格作为分隔符(假设是三个):
cut -d ' ' -f2 <<< "aaa bbb"
结果是:
bbb
这是在 debian 8 下运行的。
现在,在 debian 10 下运行的相同脚本会产生不同的输出:
如果有多个空格作为分隔符(假设是三个):
cut -d ' ' -f2 <<< "aaa bbb"
结果是“”,只是一个空格。
我希望在 debian 8 中具有与 debian 10 相同的行为。有什么想法吗?
(我知道,我可以使用 tr -s 并去掉三个空格,但我想了解为什么会有不同的行为)。
最好的问候,佐斯
答案1
cut
我认为最近的行为不应该发生这样的改变。我也无法使用 Debian 8.11 和cut
GNU coreutils 8.23 重现该情况。
但是,如果您给出cut
参数-f 2-
,并带有尾随破折号,您将获得从字段 2 开始的所有字段。我认为这与您所描述的非常匹配:
$ cut -d ' ' -f2- <<< "aaa bbb"
bbb
请注意,输出中有两个前导空格,它们是字段 2(空)、3(空)和 4 ( bbb
) 之间的字段分隔符。你的问题中有一个前导空格,但我不知道这是否是故意的。