使用来自 pstree -p 命令的 egrep 的一系列命令的派生输出

使用来自 pstree -p 命令的 egrep 的一系列命令的派生输出

我有以下一长串,它本质上提供了带有“|”的 PID 列表定界符

echo $(lsof -p $(pgrep -f dosemu | tr '\012' ,) | grep '/media/datadrv' | awk '{print $2" - " $9}' | grep 'DBASE1.RES' | awk '{print $1}') | sed 's/\s\+/|/g'

这个输出类似于19066|19500

我想做的是使用它来输入pstree命令egrep

例如下面的命令给了我我需要的

pstree -p | egrep '19066|19500'

我不知道如何将第一个命令的结果输入到第二个命令中。

更新 感谢 Goro 的回答,完整的一行是:-

pstree -p | egrep $(echo $(lsof -p $(pgrep -f dosemu | tr '\012' ,) | grep '/media/datadrv' | awk '{print $2" - " $9}' | grep 'DBASE1.RES' | awk '{print $1}') | sed 's/\s\+/|/g')

答案1

您可以给线性变量命名

var=$(echo $(lsof -p $(pgrep -f dosemu | tr '\012' ,) | grep '/media/datadrv' | awk '{print $2" - " $9}' | grep 'DBASE1.RES' | awk '{print $1}') | sed 's/\s\+/|/g')

然后输入var如下pstree

pstree -p $var

如果您想输入其中一个数字19066|19500,您可以使用sed转换|为 tab \t,则awk感兴趣的数字如下:

first_number=$(echo ${var} | sed 's/|/\t/g' | awk '{print $1}' )
19066
 pstree -p ${first_number}

相关内容