所以我想比较两个文件(一个有行号:30000和其他10000个),但是comm的结果让我感到惊讶
首先输入的内容是:
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
这些数据应该打印在第三列,因为它们存在于两个文件中!!!
我的数据有问题吗?或者我错过了什么?
先谢谢你答案 0 :(得分:2)
comm
期望输入根据当前区域设置的字符整理顺序排序,不根据数值。
-n
标志因此是错误的东西。
要根据当前区域设置对数据进行排序,而将其传递给comm
,您可以使用流程替换(并注意没有{{1}下面的标志):
-n
输出正确:
comm <(sort <first) <(sort <second)