我发现了一些在“排序”中表现奇怪的数据。对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;。
答案 0 :(得分:0)
我发现了我做错了什么。此处提供详细说明:http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19021
简而言之,我应该使用&#39; -k 1,1n&#39;指定排序应该从字段1开始和结束。因为我没有指定结束字段,而我的语言环境默默地忽略了数字中的逗号,所以它并没有比较我认为它正在比较的数字。