共通の単語を含むファイルを探す

共通の単語を含むファイルを探す

与えられたファイルと共通の単語を持つファイルのリストを作成する最良の方法は何ですか?たとえば、次のような場合があります。

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

.cwd​​このmainFile問題を解決するための最良の方法は何ですか?

1行あたりの単語数が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

アルン

関連情報