답변:
grep
서로 다른 두 줄에 사용하려면 두 패턴을 모두 검색하십시오.
$ grep -e sweet -e lemon file_type
This is a sweet
lemon.
또는 교대 사용
$ grep -E 'sweet|lemon' file_type
This is a sweet
lemon.
패턴 다음 줄을 얻으려면 컨텍스트 옵션을 사용할 수 있습니다
$ grep -A1 sweet file_type
This is a sweet
lemon.
그러나 당신이 여러 패턴, 명시 적으로 검색하는 경우 까다로운 때문에이기 grep
라인에서 생각 ... . 당신 .*
은 줄에 "달콤한"과 "레몬"사이의 모든 것을 잡을 것 입니다. 다음 줄 에서 줄 바꿈 을 -P
사용하여 "레몬"을 얻을 수 있으며 파일을 null로 구분하여 다음 과 같이 할 수 있습니다 .\n
grep
-z
$ grep -zPo 'This is a sweet\nlemon' file_type
This is a sweet
lemon.
-E
확장 정규식을 사용하십시오 ( |
이탈 할 필요없이 대체 문자 를 사용 하기 위해)-An
패턴 뒤에 추가 행을 인쇄하십시오. 여기서 n은 인쇄 할 후행 행 수입니다.-P
사용 펄 스타일의 정규 표현식 (에 "실험" grep
- 설치 pcregrep
더 나은 펄 정규식 지원 대신)-z
null 문자를 구분자로 사용하십시오 (이 경우에는 척하지만 grep
단어를 사용합니다)-o
일치하는 부분 만 인쇄-o
편집 에만 유용합니다 ...
grep: The -P and -z options cannot be combined
- 예를 들어, 그렙 (GNU 그렙) RHEL에 2.5.1
이처럼 :
grep "sweet\|lemon"
grep
"특수 문자"와 같은 "표준 모드"의 기본 작동에 의해 |
, +
, *
문자 그대로 해석 하지 않는 한 그들은 백 슬래시로 마스크하고 있습니다. 예를 들어이 답변을 참조하십시오 . 익숙한 방식을 사용하려면 문자 그대로 해석하려면 "특수 문자"를 마스킹해야합니다. "확장 모드"( grep -E
) 로 전환해야합니다 . 어쩌면 madneon 예를 들어 어떤 작전을 시도하는 것은, 그의 대답에 좀 더 정교한 수있는 것입니다 일치했다?
grep -zP
이 특정 경우 (정확하게 두 줄로 구성된 파일)에서 명령이 작동 하지만 일반적으로 줄 바꿈으로 구분 된 일반 파일을 한 줄로 간주하므로 전체 파일 내용을 덤프하십시오 (어딘가에 일치하는 경우) 혹은 아무것도 아닌; 보통 사람들이 사용하는 것이 아닙니다grep
.