기본적으로 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
|
\t
awk
first_number=$(echo ${var} | sed 's/|/\t/g' | awk '{print $1}' )
19066
pstree -p ${first_number}