egrep -if file1 file2에 대한 나의 이해가 맞습니까?

egrep -if file1 file2에 대한 나의 이해가 맞습니까?

저는 KSH, Solaris 5.10을 사용하고 있습니다. file1과일 목록이 포함되어 있고 file2과일 및 견과류 목록이 포함되어 있다고 가정합니다 . 다음 명령에 대한 나의 이해

egrep -if file1 file2 

이는 행 1을 가져와서 file1전체적으로 검색 file2하고 의 모든 행에 대해 이 프로세스를 반복한다는 것 입니다 file1.

file1따라서 최종 출력은 합계에 나타나는 모든 과일이 됩니다 file2. 제가 틀렸다면 정정해 주시고, 필요한 경우 개선 사항을 제안해 주시기 바랍니다.

답변1

내부 메커니즘은 다를 수 있지만 그렇습니다. 효과는 귀하가 설명하는 것과 같습니다. 지침:

  • file2주어진 명령의 일부가 의 행과 일치하면 명령은 의 행과 일치합니다 file1. 따라서 applein은 in과 file1일치합니다 . 이를 방지하려면 다음 방법을 사용할 수도 있습니다 .pineapplefile2-x

    -x    Consider  only  input  lines that use all characters in the line
          excluding the terminating <newline> to  match  an  entire  fixed
          string or regular expression to be matching lines.
    

    이것을 사용한다면 건너 뛰고 egrep바로 갈 수 있다고 생각합니다 grep.

  • 빈 줄은 file1다음과 같습니다.모든 것인쇄 하려면 file2다음과 같은 줄을 필터링해야 합니다.

    grep -xif <(grep . file1) file2
    
  • file1실제 파일에 포함된 내용에 따라 확장된 정규 표현식이 아닌 고정된 문자열 목록으로 처리할 수 있습니다 . pea.일치 할 수 있습니다 pear. 이렇게 하세요:

    grep -xiFf <(grep . file1) file2
    

관련 정보