107 votes

Comment grep avec une liste de mots

J'ai un fichier A contenant 100 mots séparés par de nouvelles lignes. Je voudrais rechercher le fichier B pour voir si UN SEUL des mots du fichier A y figure.

J'ai essayé ce qui suit mais cela ne fonctionne pas pour moi :

grep -F A B

146voto

iiSeymour Points 34967

Vous devez utiliser l'option -f :

$ grep -f A B

L'option -F effectue une recherche de chaîne fixe, alors que -f est pour spécifier un fichier de motifs. Vous pouvez utiliser les deux si le fichier ne contient que des chaînes fixes et non des regexps.

$ grep -Ff A B

Vous pouvez également vouloir le -w pour ne faire correspondre que des mots entiers :

$ grep -wFf A B

Lire man grep pour une description de tous les arguments possibles et de ce qu'ils font.

4voto

Alcolo47 Points 81

Pour trouver une très longue liste de mots dans de gros fichiers, il peut être plus efficace d'utiliser egrep :

remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X