我有以下一长串,它本质上提供了带有“|”的 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}