如何在unix中按字母和数字对不同字段的文件进行排序?

jak*_*115 33 unix sorting

请不要认为这是"在unix中排序字母数字数据"问题的重复...我看了其他答案,并认为我的情况有点不同!

我有这样的数据:

A    192
D    112
D    188
C    091
A    281
B    919
Run Code Online (Sandbox Code Playgroud)

...我想按第1列(按字母顺序)排序,然后按第2列排序(按数字排序).我试过用:

sort -n -k1,2
Run Code Online (Sandbox Code Playgroud)

...但是这给了我正确的第一个字段排序,但是第二个字段的排序错误(1000,1002,1003,10,1 ...而不是1,10,1000,1002,1003).

有人可以建议如何按照我喜欢的方式对这两列进行排序吗?

Rah*_*thi 41

尝试使用这样: -

sort -k1,1 -k4,4n
Run Code Online (Sandbox Code Playgroud)
  • -n:使程序根据数值排序
  • -k opts:使用给定的列号对数据/字段进行排序.例如,选项-k 2使用第二
    列数据对程序进行排序.选项-k 3,3n -k 4,4n对每列进行排序.首先
    ,它将排序第3列,然后排序第4列.

  • 令人费解的是,当数据中似乎只有两列时,答案在第4列上排序.尽管如此,基本答案(使用`-k`指定要排序的列以及如何对它们进行排序)是有效的. (2认同)

小智 6

这应该工作:

sort -t "," -k1,1 -k2n,2 file
Run Code Online (Sandbox Code Playgroud)