Unix 排序函数不能完全用数字对字符串进行排序

Unix 排序函数不能完全用数字对字符串进行排序

我有一个文件,其中包含由制表符分隔的两列。

  A10         A10_motorway_(Switzerland)              
  A-10        A-10_N/AW
  A10         A10_Networks
  A-10        A-10_road
  A10         A10_road                  
  A10_road_(California)      A10_road_(Canada)      
  A10_road_(Croatia)         A10_road_(disambiguation)  
  A10_road_(England)         A10_road_(Great_Britain)   
  A10_road_(Isle_of_Man)     A10_road_(Isle_of_Man) 
  A10_road_(Latvia)          A10_road_(Malaysia)
  A10_road_(United_Kingdom)  A10_road_(United_States_of_America)    
  A10_road_(USA)             A10_road_(Zimbabwe)
  A-10        A-10_Shrike
  A10         A10_(Switzerland)

我想按字母顺序按第一列对该文件进行排序。所以相同的标题应该连续出现。

所以我这样做了:

     sort -t $'\t' -k1 -d filename 

但结果实际上是上面的快照。如您所见,条目“A-10”没有排序,也不是连续发生的。我并不真正关心字母顺序本身,但我希望相同的标题连续出现。谁能解释为什么排序不允许我这样做以及如何解决这个问题?谢谢!

答案1

请尝试:

LC_COLLATE=C sort myfile

过去遇到过类似的行为,同事建议的这个对我有帮助

答案2

我凭经验发现-k1,1将“ A10”放在一起,将“ A-10”放在一起,但我不明白为什么。这是sort来自 GNU coreutils 8.4 的。

相关内容