2012-01-23 6 views
4

뒤에 부정적인 모습 : PS 결과를 포함하기 때문에,맥 OSX, 강타, AWK, 나는 AWK 사용하여 특정 프로세스를 찾으려는

ps aux|awk '/plugin-container.*Flash.*/' 

지금은 과정을 발견하지만,이 결과에 자신을 포함 게다가. 이를 방지하기 위해 다음과 같이 음수 모양을 사용하려고합니다.

ps aux|awk '/(\?<!awk).*plugin-container.*Flash.*/' 

그러나 작동하지 않습니다. awk 지원이 뒤떨어져 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사합니다

+1

파이프 ('|')를 사용할 수 있다면 왜 'grep -v awk'로 다시 파이프하지 않을까요 –

+0

참조 http://stackoverflow.com/a/8965530/207248 – SiegeX

+0

두 명의 응답자는 그들이 모르는다고 말합니다 awk가 lookbehind를 지원하는지 여부. 그렇지 않습니다. OS X (와 GNU)'grep'은 look-hind (그리고 ahead 등)를 제공하는 PCRE를 지원하는'-P' 옵션을 가지고 있습니다. –

답변

7

일반적인 트릭은

ps aux | grep '[p]lugin-container.*Flash.*' 

문자 클래스 [P가]에서 GREP 자체를 방지 사용하는 것입니다 일치합니다.

+1

같은 트릭이 awk에서 작동합니다 :'ps aux | awk '/[p]lugin-container.*Flash. * /'' –

+0

이것은 awk에서도 잘 작동합니다. 어떻게 작동하는지 설명해 주시겠습니까? 고마워요 – Loke

+0

@ Loke : 마지막 줄에서 설명하려고했습니다. '[p]'는 문자'p' 만 일치하는 문자 클래스를 생성하므로'plugin'은 일치하지만'[p] lugin'은 일치하지 않습니다. 즉, 검색하는 문자열을 포함하지 않도록 명령 줄을 변경합니다. – choroba

0

AWK는 lookbehinds을 지원하는 경우 나도 몰라,하지만 시작에 물음표가 탈출하지 말아야 경우, 부정적인 lookbehind 바로 여는 괄호 후 (?<!

물음표를 시작는 표시이다 ,이 그룹은 캡쳐 그룹이 아니라는 것, 즉 특별한 의미가 있습니다.

2

awk가 lookbehind를 지원하는지 여부를 잘 모르겠지만, 나는 보통 grep -v이 문제 해결 : (. 내가 일반적으로 위의 awk 명령 grep을 사용하는 것, 또한)

[email protected]:~$ ps aux | awk '/plugin-container.*Flash/' | grep -v awk 

+0

'awk는 lookaround 패턴을 지원하지 않습니다. – wajatimur