如何根据第一个字母后的数字对文本文件进行排序

M.A*_*A.G 4 linux sorting grep

我在 Linux 中有一个文本文件,如下所示:

H-988   -0.5418829321861267 no
H-989   -0.5033702254295349 yes
H-990   -1.1516857147216797 hi
H-99    -0.5005123019218445 hello
Run Code Online (Sandbox Code Playgroud)

我想根据连字符后面的数字对该文件进行排序。所以顺序应该是:

H-99    -0.5005123019218445 hello
H-988   -0.5418829321861267 no
H-989   -0.5033702254295349 yes
H-990   -1.1516857147216797 hi
Run Code Online (Sandbox Code Playgroud)

我尝试了 grepsort命令,但没有成功。例如,它将 95 放在 949 之后,而不是之前,对于 99 和 990 也是如此,如提供的示例所示

小智 5

您应该按数字排序,

sort --numeric-sort --field-separator "-" --key 2 some.txt
Run Code Online (Sandbox Code Playgroud)

或更短的版本

sort -n -t "-" -k 2 some.txt
Run Code Online (Sandbox Code Playgroud)