2 개의 다른 라인에 grep을 사용하는 방법 검색하려면 어떻게 해야합니까? 예를

단일 grep명령 을 사용하여 두 개의 다른 줄에있을 때 두 개의 다른 구를 검색하려면 어떻게 해야합니까?

예를 들어

1 행 : 이것은 달콤합니다.

2 행 : 레몬.

나는 이것을 사용했지만 결과는 없다

grep "sweet.*lemon" file_type


답변

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로 구분하여 다음 과 같이 할 수 있습니다 .\ngrep-z

$ grep -zPo 'This is a sweet\nlemon' file_type
This is a sweet
lemon.

노트:

  • -E확장 정규식을 사용하십시오 ( |이탈 할 필요없이 대체 문자 를 사용 하기 위해)
  • -An 패턴 뒤에 추가 행을 인쇄하십시오. 여기서 n은 인쇄 할 후행 행 수입니다.
  • -P사용 펄 스타일의 정규 표현식 (에 “실험” grep– 설치 pcregrep더 나은 펄 정규식 지원 대신)
  • -znull 문자를 구분자로 사용하십시오 (이 경우에는 척하지만 grep단어를 사용합니다)
  • -o 일치하는 부분 만 인쇄

답변

이처럼 :

grep "sweet\|lemon"