linux - 在linux中按字母数字优先排序数字

标签 linux bash shell terminal sh

我想按字母数字顺序对文件进行排序,但优先考虑每个文件条目中的数字。示例:文件是:

22 FAN
14 FTR
16 HHK
19 KOT
25 LMC
22 LOW
22 MOK
22 RAC
22 SHS
18 SHT
20 TAP
19 TAW
23 TWO
15 UNI

我想将其排序为:

25 LMC
23 TWO
22 FAN
22 LOW
22 MOK
22 RAC
22 SHS
20 TAP
19 KOT
19 TAW
18 SHT
16 HHK
15 UNI
14 FTR

最佳答案

因此,基本上,您要求按降序对第一个字段进行数字排序,但如果数字键相同,您希望第二个字段按自然或升序排序。

我尝试了一些方法,但这是我设法使其发挥作用的方法:

   sort -nk2 file.txt  | sort -snrk1

说明:

  • 第一个命令使用第二个字母数字字段按自然顺序对整个文件进行排序,而第二个命令使用第一个数字字段对输出进行排序,以相反的顺序显示它,并要求它是“稳定”排序。

  • -n 用于数字排序,而不是字母数字排序,其中 6 将排在 60 之前。

  • -r 用于倒序,即从最高到最低。如果未指定,它将采用自然顺序或升序顺序。
  • -k 用于排序的或字段。
  • -s 用于稳定排序。此选项保留具有相等键的记录的原始记录顺序。

关于linux - 在linux中按字母数字优先排序数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52847393/

相关文章:

linux - sed 如何删除文件中的前 17 行和后 8 行

c - 套接字编程中的段错误

linux - 我可以在同一行的 file.txt 上写吗

linux - Linux内存管理器中的"Weak reference"?

bash - 查找多个文件的公共(public)行

php - 来自 BASH 的 Tcpdump

ruby - 在终端上不调用 "ruby"执行 ruby​​ 文件

android - 初始化.rc : service killed and restarts

shell - 在构建 docker 镜像时运行 shell 脚本

linux - 为 unix-layman 在 unix 中使用解释器运行 r 脚本或命令