在单个 CSV 行中获取 PS 部分的输出

在单个 CSV 行中获取 PS 部分的输出

我需要收集一些与字符串匹配的进程的 CPU 消耗,但我需要将其放在由命令分隔的一行上,并且想知道是否有人知道这是否可以在一个ps//命令中完成。grepawk

使用案例:

  • 我正在使用的命令
ps aux | grep tx | grep -v grep | awk {'print $11":"$3'}
  • 输出
/opt/tx/bin/server:5.2
/opt/tx/bin/engine:1.2
/opt/tx/bin/agent:0.3
  • 我需要得到什么
/opt/tx/bin/server:5.2,/opt/tx/bin/engine:1.2,/opt/tx/bin/agent:0.3

欢呼所有

答案1

您可以使用以下方法达到相同的效果:

ps -e -o command,pcpu | awk -v OFS=: -v ORS=, '/tx/ {print $1, $NF}' | sed 's/,$/\n/'

这使用ps选项过滤列,使用 AWK 过滤输出,保留每个匹配行上的第一个和最后一个条目,更改字段和记录分隔符,并用换行符替换尾随逗号。

相关内容