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

如何按CPU使用率降序排列txt文件中的服务器CPU与时间对应数据

解决成对行按CPU使用率降序排序的问题

看起来你遇到的核心问题是每两个行对应一个服务器的完整信息,普通的sort命令只会单独处理每一行,没法把CPU行和对应的时间行绑定在一起排序。下面给你一个简洁的解决方案,能完美实现你想要的结果:

解决方案命令

awk 'NR%2==1 {cpu_line=$0; getline time_line; print cpu_line "\t" time_line}' your_file.txt | sort -k6,6rn | tr '\t' '\n'

命令分步解释

  1. AWK合并成对行:

    • NR%2==1:判断当前行是奇数行(也就是CPU信息行)
    • 把CPU行存入cpu_line变量,然后用getline读取下一行(时间信息行)存入time_line
    • 用制表符\t把两行合并成一行输出,这样每个服务器的两组信息就变成了单行,方便后续排序
  2. Sort按CPU使用率排序:

    • -k6,6rn:指定按合并行的第6个字段(也就是CPU使用率数值,比如22%)排序
      • r:倒序排列(降序)
      • n:按数值大小排序(sort会自动忽略%符号,只比较前面的数字)
  3. TR恢复换行格式:

    • tr '\t' '\n':把合并时用的制表符换回换行符,这样就恢复了你想要的“CPU行+时间行”成对的格式

为什么你之前的命令无效?

你用的sort -t: -k2,2rn <filename是把每一行单独处理:

  • 它以冒号:为分隔符,取第2个字段排序,但只有CPU行有usage:这样的冒号结构,时间行没有,所以排序后只会保留符合规则的行,而且没法把时间行和CPU行关联起来,自然得不到正确的结果。

测试验证

用你提供的原始文件内容运行上面的命令,会直接输出你期望的排序结果:

Server-PROD~]$ show cpu cpu usage: 22% used
Server-PROD~]$ show time Thu Sep 26 11:25:37
Server-QA~]$ show cpu cpu usage: 18% used
Server-QA~]$ show time Thu Sep 26 11:25:32
Server-DEV~]$ show cpu cpu usage: 16% used
Server-DEV~]$ show time Thu Sep 26 11:25:06
Server-STAGE~]$ show cpu cpu usage: 11% used
Server-STAGE~]$ show time Thu Sep 26 11:26:05

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:37:40