2015-02-06 2 views
2

grep을 사용하여 키워드 뒤에 모든 것을 인쇄하려하지만 명령이 전체 행을 반환합니다. 다음 사용하여 임 :grep 정규 표현식이 전체 행을 반환합니다.

grep -P (\skeyword\s)(.*) 

예를 들어 라인은 다음과 같습니다

abcdefg   keyword hello, how are you. 

결과는 hello, how are you해야하지만 대신 전체 라인을 제공합니다. 내가 여기서 뭔가 잘못하고있는거야?

답변

6

당신은 사용할 필요가 -o ( 일치) 매개 변수와 \K (폐기 이전에 일치하는 문자) 또는 양 lookbehind을.

grep -oP '\skeyword\s+\K.*' file 

\K은 전체 정규식 매치에서 지금까지 일치하는 텍스트를 유지합니다. \s+은 하나 이상의 공백 문자와 일치합니다.

예 :

$ echo 'abcdefg   keyword hello, how are you.' | grep -oP '\skeyword\s+\K.*' 
hello, how are you. 
2

기본적으로 Grep은 일치하는 행을 인쇄합니다. 일치하는 표현식 만 인쇄하려면 '-o'옵션을 사용하십시오.

관련 문제