You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Sort能否对混合值列进行排序?附程序输出示例

用Linux sort命令对混合值列排序的方案

当然可以!Linux的sort命令灵活性拉满,完全能处理你这种包含混合格式值的列排序需求。针对你给出的输出内容,我们可以根据不同的排序目标(比如按测试规格、按耗时)来定制命令,下面给你详细拆解:

先明确你的输出格式

你的每一行输出结构大致是:

0: test_func() [规格字段] [耗时数值]

比如典型行:0: test_func() 4x1024 0.2260167
这里用空格分隔字段,第4个字段是4x1024这类混合规格,第5个字段是浮点型的耗时数值。


方案1:按耗时数值排序(最简单的场景)

如果想按最后的耗时从小到大(或从大到小)排序,直接用sort的数值排序选项-n,指定第5列作为排序键即可:

从小到大排序

sort -k5n your_output.txt

从大到小排序(加反向选项-r)

sort -k5nr your_output.txt

运行后你会看到耗时最短的0: test_func() 4x64 0.004869排在最前面(升序),或者最长的0: test_func() 16x8192 ...排在最前面(降序)。


方案2:按混合规格字段(如4x64)排序

如果想按4x64这类混合值排序,需要拆分这个字段的两个数字部分:先按x前面的数字(比如4、16)排序,再按x后面的数字(比如64、128)排序。这里可以通过指定字段的子字符范围来实现:

按规格升序排序

sort -k4.1n -k4.3n your_output.txt

命令解释:

  • -k4.1n:以第4个字段的第1个字符开始的数字(也就是x前面的部分)作为第一排序键,按数值排序
  • -k4.3n:以第4个字段的第3个字符开始的数字(也就是x后面的部分)作为第二排序键,按数值排序

排序后的结果会先把所有4x开头的行按后面的数字从小到大排(4x64 → 4x128 → 4x256 ...),再排16x开头的行,完全符合规格的递增逻辑。


进阶技巧

  • 如果要去重相同的行,在命令末尾加-u选项
  • 如果需要稳定排序(保持原输出中相同排序键的行的相对顺序),加-s选项
  • 如果你想同时按规格和耗时排序,可以叠加多个-k参数,比如先按规格升序,再按耗时升序:
    sort -k4.1n -k4.3n -k5n your_output.txt
    

内容的提问来源于stack exchange,提问作者bad code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:20:22