Linux `sort` 在数字字段上不起作用

Linux `sort` 在数字字段上不起作用

以下是示例文本文件:

Peter:123777:ETA  
Joan:16466:HLT  
John:11223:HR  
David:23456::::FSI  
George::::876543:ECS 

任务是按第二个字段进行排序,因此我执行以下操作:

cat input.txt | tr -s ":" | cut -d':' -f1,2,3 | sort -t':' -k2

输出如下:

John:11223:HR   
Peter:123777:ETA  
Joan:16466:HLT  
David:23456:FSI  
George:876543:ECS  

但它没有排序。有人知道我做错了什么吗?

我尝试搜索“Linux 排序不起作用”,并检查了一些答案。但无法理解我做错了什么。

答案1

但它不起作用。

它确实排序了;输出的顺序与输入的顺序不同。它只是没有按照你期望的方式排序。

123777排序在前,23456因为在您的语言环境中1排序在前2(我猜在任何正常的语言环境中都是如此)。如果您想要数字然后你需要告诉它sort

  • 通过使用全局选项-nsort -n -t':' -k2
  • n或者在键的定义中包含: sort -t':' -k2n

相关内容