如何将awk和pipe的输出组合成htop?

时间:2018-05-23 16:22:56

标签: bash shell awk

$ ps -ef | grep python | awk -F' ' '{print $2}'
9825
4470
4619

$ htop -p 9825,4470,4619

现在,我必须制作两个单独的命令才能观察htop中的所有python进程。有没有办法可以管道awk的所有结果并将它们输入htop

2 个答案:

答案 0 :(得分:1)

您可以避免grep并仅使用awk使用类似的内容:

ps -ef | awk '/[p]ython/{print $2}'

然后你可以使用:

htop -p $(ps -ef | awk -v ORS=, '/[p]ython/{print $2}')

注意[]周围的p,这是避免打印第二个命令的好方法:

 ps -ef | awk '/[p]ython/{print $2}'
     |         |
  cmd 1       cmd 2

它的工作原理是因为awk会将正则表达式[p]翻译成"匹配来自[p]的字符,在这种情况下只匹配p,然后跟{ {1}}:

ython

答案 1 :(得分:1)

如果你有pgrep(你可能会这样做):

htop -p $(pgrep python | paste -sd,)