这是我的代码,
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
避免:head
sed
ps -eo %cpu= --sort=-%cpu | sed "s/$/;$(date +%T)/;10q"
您可能还想看看ts
添加时间戳的命令。