首页 > 解决方案 > 如何将 awk 和管道的输出组合到 htop 中?

问题描述

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

$ htop -p 9825,4470,4619

现在,我必须创建两个单独的命令才能查看htop. 有没有办法可以将所有结果从管道中输入awk并将它们输入htop

标签: bashshellawk

解决方案


您可以避免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仅匹配字符,然后是ython

[p]ython != python

推荐阅读