2011-02-15 6 views
0

내가 상관없이이 처리되는, 쉘 프롬프트에서 $: ps au

을 실행하지 않고 그 지역에서 5 번째로 엔트리의 두번째 필드를 선택하려면하고 말을 할 수 있습니다. 어떻게해야합니까?선택에만 필요 라인 쉘 프롬프트

답변

6

awk.

awk 'NR==6 { print $2 }' 

헤더를 건너 뛸 필요가 있기 때문에 6 번째 레코드입니다.

"PS의 AU"출력에
ps au | head -6 | tail -1 | cut -d ' ' -f 2 
+0

또한 동등하게 좋은이를 받아들이는 내가 원한 때문에 @Christopher Creutzig의 대답 awk 접근, 나도 나중에 그것을 사용하려고합니다. – Shrinath

5

은 또한 더 낮은 수준의 도구를 사용할 수 있습니다 신분증; 당신은 당신이 필요 PS로 말함으로써 직접 추출 할 수 있습니다 :

ps a -o pid= 

그런 다음 당신은 그냥 출력에 다섯 번째 줄이 필요합니다

ps a -o pid= | sed '5!d' 
+0

단순함을 사랑합니다 :) 내 +1 – Shrinath

+0

오,하지만 출력이 비어 있습니다, 내가 잘라내어 부분을 제거, 그것을 작동하지만, 나는 수 없습니다 cut의 -f 옵션을 사용하십시오 ... 필드를 적절하게 recoginising하지 않습니다. – Shrinath

+0

글쎄, 그것은 "필드"의 개념에 달려 있습니다. 'cut '은'awk'처럼 공백을 없애지 않지만 "빈 필드"를 절대적으로 정상적인 것으로 간주합니다. 체인에 또 다른'tr -d '''를 추가하는 것이 어렵지는 않았지만, 어느 시점에서는별로 단순함이 남아 있지 않습니다. –

0

가, 두 번째 필드는 과정이다 : 당신이 awk 또는 동등 perl 또는 ruby 명령을 사용하지 않으려면

+0

어떤 프로세스 ID인지 모르겠다. 단지 5 번째 레코드를 선택하려고한다. – Shrinath

+0

원하는 프로세스 ID를 알 필요가 없다. 'ps a -o pid ='는 목록을 출력한다. PID ('ps au'로 얻는 것과 똑같은) – marco