如何使用字母顺序对主列进行排序,然后使用数字顺序对辅助列进

时间:2012-08-06 15:39:00

标签: bash shell sorting

假设有一个文本文件:

10  A   QAZ
5   A   EDC
14  B   RFV
3   A   WSX
7   B   TGB

我希望将第二列作为具有字母顺序的主列和第一列作为具有数字顺序的辅助列进行排序。以下是预期结果:

3   A   WSX
5   A   EDC
10  A   QAZ
7   B   TGB
14  B   RFV

我尝试了sort -k 2,2 -k 1,1 a.txt -nsort -k 2,2 -k 1,1 a.txt,但两者都给出了错误的结果。我该怎么解决这个问题?感谢。

2 个答案:

答案 0 :(得分:9)

这应该有效:

sort -b -k2,2 -k1,1n

-b是必不可少的,没有它,输出是错误的,因为sort错误地确定了第二列的位置。有关详细信息,请参阅man sort(或here)。

另外,请检查locale。它们可以影响sort的工作方式。

答案 1 :(得分:0)

这可能对您有用:

sort -k1.5,1.8 -k1.1,1.4n file