bash - 根据特定子字符串对 Bash 中的字符串列表进行数字排序

标签 bash sorting

我有一个字符串列表,不幸的是它似乎不适合用 sort --key=??? 排序.

这是字符串:

Original                        40.101 s                   40.556 s
User XYZ                         3.389 s                    3.261 s
User XYZ/User ABC                5.342 s                    5.300 s
Somebody else                   32.531 s                   32.154 s
My friend Tony the Pony          5.905 s                    5.639 s
L33t                            27.007 s                   26.893 s
Serial port                      7.871 s                    7.738 s
Unknown user                     2.815 s                    2.700 s

我希望它根据第一个数字进行排序,升序或降序并不重要,尽管如果知道一个原则上可以同时做到这两种情况的解决方案会很棒。

我试过了 sort --key=2 <<HERE ... HERE但不出所料,这只会导致随机顺序。

最佳答案

假设您的输入文件正确缩进了空格,请使用 sort 命令的 -k 选项:

sort -n -k1.30 file

或相反的方式:

sort -nr -k1.30 file

1.30 表示跳过第一个字段的前 30 个字符。

-n 开关按数字而不是字典顺序排序。

关于bash - 根据特定子字符串对 Bash 中的字符串列表进行数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52437691/

相关文章:

java - 如果值相等,PriorityQueue 排序不会维持字母顺序

c++ - 需要有关多线程合并排序的建议

java - 如果将 TreeMap 作为 Map 传递给它,Treemap 会使用吗

sorting - Mongoose 按功能排序

string - 按固定顺序对选定的部分进行排序 - 空间不受限制

regex - 使用文件内部的字符串重命名文件的 Shell 脚本

linux - 从两端查找具有索引的子字符串

arrays - 如何在shell中找到数组的长度?

bash - 通过 curl 执行远程脚本不起作用

linux - 检查当前激活的 conda 环境