Use saída derivada de uma série de comandos para egrep do comando pstree -p

0

Eu tenho o seguinte liner longo que essencialmente fornece uma lista de PIDs com um '|' caractere delimitado

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

esta saída é algo semelhante a 19066|19500

O que eu quero fazer é usar isso para alimentar o comando pstree usando egrep .

por exemplo, o seguinte comando me dá o que eu preciso

pstree -p | egrep '19066|19500'

O que eu não consigo descobrir é como alimentar os resultados do primeiro comando no segundo.

Atualizar Graças à resposta de Goro, o completo one liner foi: -

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

1 resposta

1

Você pode dar ao linear um nome de variável

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

Em seguida, alimente var em pstree da seguinte forma:

pstree -p $var

Se você quiser alimentar um dos números 19066|19500 , poderá usar sed para converter | na guia \t e, em seguida, awk o número de interesse da seguinte forma:

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