2013-07-25 15 views
56

Ho un file A con 100 parole separate da nuove righe. Vorrei cercare il file B per vedere se QUALSIASI delle parole nel file A si verificano in esso.Come grep con un elenco di parole

ho provato quanto segue ma non funziona per me:

grep -F A B 

risposta

77

È necessario utilizzare l'opzione -f:

$ grep -f A B 

L'opzione -F fa una ricerca stringa fissa dove, come -f è per specificando un file di modelli. Potresti volere entrambi se il file contiene solo stringhe fisse e non regex.

$ grep -Ff A B 

Si consiglia inoltre l'opzione -w per la corrispondenza solo parole intere:

$ grep -wFf A B 

Leggi man grep per una descrizione di tutti i possibili argomenti e quello che fanno.

+4

+1 per 'spiegazione opzione -w'. –

+3

È -F solo un'ottimizzazione se non vuoi usare le espressioni regolari? – phoenix

+1

@phoenix esattamente. –

0

Per trovare un elenco molto lungo di parole file di grandi dimensioni, può essere più efficace utilizzare egrep:

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