2017-02-26 1 views
0

에 비 캡처 그룹을 작성하는 방법 다음 명령을 제대로 포착하지 않는 -P 플래그를 사용하는 경우. 내가 할 수있는 egrep을 기다리고 있었다 않는 16714은 egrep을

egrep -o '^[^ ]+(?= .*[R]3300:localhost:22)' 

(단 그렙에 교환 16714 ssh -f -N -T -R3300:localhost:22에서 이것을 처리하십시오)

+0

내가 행의 나머지 만 PID를 원하지 않는다. 그리고 질문은 egrep에 관한 것입니다. 분명히 그것이 가능한 능력에 대해 오해했기 때문입니다. – AJP

답변

1

grep -P는 Perl 정규 표현식 엔진을 사용하도록합니다.
egrepgrep -E과 같으며 grep이 lookahead를 지원하지 않는 ERE (확장 정규 표현식) 엔진을 사용하도록합니다.
현재 Perl과 ERE (및 기타)의 차이점에 대한 빠른 참조를 찾을 수 있습니다 http://www.greenend.org.uk/rjk/tech/regexp.html

0

는 POSIX의 GREP으로이 문제를 처리하기 위해, 당신은을 분리 cut를 사용하여 다음 관심있는 라인을 분리하고 GREP을 사용 관심 분야 :

$ echo "16714 ssh -f -N -T -R3300:localhost:22" | grep 'R3300:localhost:22' | cut -d' ' -f1 
16714 

또는 단지 awk 사용

$ echo "16714 ssh -f -N -T -R3300:localhost:22" | awk '/R3300:localhost:22/{print $1}' 
16714