Primeiro, gere índices para mainFile,
sed 's/ /\n/g' mainFile | sort | uniq > mainFile.idx
Em seguida, faça um grep para sequências fixas:
grep -F -f mainFile.idx file*
Qual seria a melhor maneira de criar uma lista de arquivos que tenham palavras comuns com um determinado arquivo? Por exemplo, se eu tivesse:
$ ls
mainFile file1 file2 file file4
$ cat mainFile
exquisite malicious sentient pulsating
perspicacious one
tawdry fumigate Baryshnikov O'connor
e eu queria listar qualquer um dos arquivos no cwd
que continha qualquer uma das palavras em mainFile
. Qual seria a melhor maneira de fazer isso?
Como o número de palavras por linha em mainFile
não é constante, eu estava encontrando soluções usando cut
um pouco complicado. Eu estava tentando criar uma string com as palavras e colocá-las separadas por |
em um comando grep -l "exquisite|malicious|etc" *
. Estou aberto a qualquer método que possa ser melhor.
Se o seu grep
suportar a opção não padrão -w
(para palavras correspondentes):
grep -lwFe "$(tr -cs "[[:alnum:]_'-]" '[\n*]' < mainfile | sort -u)" file*
use este código:
for pattern in 'cat mainfile'
do
grep -l "$pattern" file*
done
ARUN