1

所以我试图比较两个文件(一个具有行号:30000 和其他 10000),但通讯的结果让我感到惊讶

第一个输入内容是:

79044630
79562151
80746665
81776377
100079031
100109122
100109586
100168781
100197424
100203652

第二个输入内容是:

79044619
79562151
80746665
81776367
100079031
100109122
100109586
100168781
100197424
100203652
100318504
100322466
100345449
100365010
100422997
41325291528
41374900954
41680701471
41777751048
41783905750

运行输出comm first second

    79044619
79044630
        79562151
        80746665
    81776367
    100079031
    100109122
    100109586
    100168781
    100197424
    100203652
    100318504
    100322466
    100345449
    100365010
    100422997
    41325291528
    41374900954
    41680701471
    41777751048
    41783905750
81776377
100079031
100109122
100109586
100168781
100197424
100203652

sort -n提示:我在使用命令之前使用命令对输入数据进行排序comm

comm 命令的错误结果与数据有关:

100079031
100109122
100109586
100168781
100197424
100203652

这些数据应该打印在第三列,因为它们存在于两个文件中!!!

我的数据有问题吗?还是我遗漏了什么?

先谢谢你

4

1 回答 1

2

comm期望根据当前语言环境的字符排序顺序对输入进行排序,而不是根据数值。

因此,-n旗帜在这里是错误的。

要在传递给根据当前语言环境对数据进行排序comm,您可以使用进程替换(并注意-n下面没有标志):

comm <(sort <first) <(sort <second)

并且输出正确:

                100079031
                100109122
                100109586
                100168781
                100197424
                100203652
        100318504
        100322466
        100345449
        100365010
        100422997
        41325291528
        41374900954
        41680701471
        41777751048
        41783905750
        79044619
79044630
                79562151
                80746665
        81776367
81776377
于 2017-06-24T16:07:28.790 回答