Linux/Unix 中的排序问题

Linux/Unix 中的排序问题

我有两个非常长的逗号分隔文件。两个文件的每一行都有大约 101 列,每个文件都有 41705 条记录。

在对文件 A 和文件 B 进行排序之前:-


01B60D9F4DEB83,FY 
01B60D9F4DEB83,AU
01B60D9F4DEB83,BB
01B60D9F4DEB83,BB
01B60D9F4DEB83,JA

对文件 A 进行排序后:-


01B60D9F4DEB83,BB
01B60D9F4DEB83,FY
01B60D9F4DEB83,BB
01B60D9F4DEB83,AU
01B60D9F4DEB83,JA

对文件 B 进行排序后:-


01B60D9F4DEB83,FY 
01B60D9F4DEB83,BB
01B60D9F4DEB83,BB
01B60D9F4DEB83,AU
01B60D9F4DEB83,JA

在 Solaris 和 Linux 上使用的命令:-

sort -t"," -k1,1 fileA.csv > FileA_Sort.csv
sort -t"," -k1,1 fileB.csv > FileB_Sort.csv

有人能告诉我为什么相同的起始序列会得到相同的值吗?我遗漏了什么?

答案1

您正在按第一列排序。当许多记录在第一列中具有相同的值时,它们可以按任意随机顺序排列。对于大文件,算法取决于可用内存(http://vkundeti.blogspot.fr/2008/03/tech-algorithmic-details-of-unix-sort.html)。

如果您想保留顺序,您应该添加选项‘-s’。

相关内容