공통 단어가 포함된 파일 찾기

공통 단어가 포함된 파일 찾기

주어진 파일과 공통된 단어가 있는 파일 목록을 만드는 가장 좋은 방법은 무엇입니까? 예를 들어 다음과 같은 경우가 있습니다.

$ ls
  mainFile  file1  file2  file file4
$ cat mainFile
  exquisite malicious sentient pulsating
  perspicacious one
  tawdry fumigate Baryshnikov O'connor

.cwdmainFile​이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

한 줄당 단어 수가 mainFile일정하지 않기 때문에 cut몇 가지 트릭을 사용하여 해결책을 찾았습니다. 단어로 문자열을 만든 다음 이를 명령 |으로 구분 하여 넣으려고 합니다 grep -l "exquisite|malicious|etc" *. 나는 어떤 접근 방식에도 열려 있지만 이것이 더 나을 수도 있습니다.

답변1

먼저 mainFile에 대한 인덱스를 생성하고,

sed 's/ /\n/g' mainFile | sort | uniq > mainFile.idx

그런 다음 고정 문자열을 grep합니다.

grep -F -f mainFile.idx file*

답변2

grep비표준 옵션을 지원하는 경우 -w(단어 일치에 대해):

grep -lwFe "$(tr -cs "[[:alnum:]_'-]" '[\n*]' < mainfile | sort -u)" file*

답변3

다음 코드를 사용하세요:

    for pattern in `cat mainfile`
    do
    grep -l "$pattern" file*
    done

아룬

관련 정보