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|\tawk

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

관련 정보