为什么'排序'似乎根据是否存在不同的字段错误地对字段进行排序?

时间:2014-11-11 16:31:23

标签: sorting gnu-coreutils

我发现了一些在“排序”中表现奇怪的数据。对csv文件的第一个字段进行数字排序时,第4列的存在与否会导致第7行的排序不正确。

我在Slackware64-current上使用GNU sort 8.21。

数据:https://gist.github.com/anonymous/2a7beb4871b25ae8f8b3

这有效:

cut -d , -f 1-3 < weird.csv | sort -t , -k 1n

这不起作用:

cat weird.csv | sort -t , -k 1n

第7行似乎排序不正确。

我似乎无法找到这种行为的明显解释。使用&#39; g&#39;而不是&#39; n&#39;有我期望的行为,但我不清楚&#39; g&#39;并且&#39; n&#39;。

1 个答案:

答案 0 :(得分:0)

我发现了我做错了什么。此处提供详细说明:http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19021

简而言之,我应该使用&#39; -k 1,1n&#39;指定排序应该从字段1开始和结束。因为我没有指定结束字段,而我的语言环境默默地忽略了数字中的逗号,所以它并没有比较我认为它正在比较的数字。