如何在 shell 脚本中交换时间和 CPU 使用率

如何在 shell 脚本中交换时间和 CPU 使用率

这是我的代码,

ps -eo %cpu --sort=-%cpu |head|tail -n+2 | sed "s#^#$(date +%T);#"

显示内容如下:01:29:29;1.2

我可以知道我是否想要这样的输出:1.2;01:29:29

我该怎么办?请给我一些建议,谢谢。

答案1

字符^锚定在模式的开头;要锚定在结尾,请使用$。需要小心一点,因为您使用“软”双引号来允许日期命令的 shell 扩展,并且$#是 shell 所特有的(因此必须转义):

ps -eo %cpu --sort=-%cpu |head|tail -n+2 | sed "s#\$#;$(date +%T)#"

或者,使用更常见的/sed 分隔符:

ps -eo %cpu --sort=-%cpu |head|tail -n+2 | sed "s/$/;$(date +%T)/"

(因为$/不是一个特殊参数)。

tail -n+2请注意,您可以通过附加=到规范来避免需要,也可以通过指示在处理 10 行后退出来ps -o避免:headsed

ps -eo %cpu= --sort=-%cpu | sed "s/$/;$(date +%T)/;10q"

您可能还想看看ts添加时间戳的命令。

相关内容