为什么我需要指定“-o auto”才能使 join 的“-e”选项起作用?

为什么我需要指定“-o auto”才能使 join 的“-e”选项起作用?

有以下两个简单文件:

a.txt

1 a
2 b
5 c

b.txt

2 x
4 y
5 z

以下命令的行为与预期不同:

$ join -a 1 -a 2 -e 0 a.txt b.txt 
1 a
2 b x
4 y
5 c z

我希望该选项可以-e 0用零填充缺失值。但是,以下方法确实有效:

$ join -a 1 -a 2 -e 0 -o auto a.txt b.txt 
1 a 0
2 b x
4 0 y
5 c z

从 阅读文档$ man join,我发现-o和之间没有任何联系,-e这将使上述行为变得有意义。相反,我发现它具有误导性,-o auto需要将无用的内容插入到我的命令中才能-e 0工作。

有解释吗?或者我应该将其作为 bug 提交给 coreutils?

答案1

嗯,这已经作为正式报告提交了那里。答案是有-e和之间的连接-o,该连接在页面中进行了解释info join。已发布补丁以在man info页面中对其进行澄清。

相关内容