Quelle serait la meilleure façon de créer une list de files qui ont des mots communs avec un file donné. Par exemple, si j'avais:
$ ls mainFile file1 file2 file file4 $ cat mainFile exquisite malicious sentient pulsating perspicacious one tawdry fumigate Baryshnikov O'connor
et je voulais listr tous les files dans le cwd
contenant l'un des mots dans mainFile
. Quelle serait la meilleure façon de procéder?
Étant donné que le nombre de mots par ligne dans mainFile
n'est pas constant, je trouvais des solutions à l'aide d'un cut
. J'essayais de créer une corde à partir des mots et de les placer séparés par |
dans une command grep -l "exquisite|malicious|etc" *
. Je suis ouvert à toute méthode bien que cela pourrait être mieux.
Générez d'abord des indices pour mainFile,
sed 's/ /\n/g' mainFile | sort | uniq > mainFile.idx
Ensuite, faites un grep pour les strings fixes:
grep -F -f mainFile.idx file*
Si votre grep
supporte l'option non-standard -w
(pour les mots correspondants):
grep -lwFe "$(tr -cs "[[:alnum:]_'-]" '[\n*]' < mainfile | sort -u)" file*
utilisez ce code:
for pattern in `cat mainfile` do grep -l "$pattern" file* done
ARUN