2013-07-25 8 views
56

मेरे पास एक फ़ाइल ए है जिसमें 100 शब्दों को नई लाइनों से अलग किया गया है। मैं यह देखने के लिए फ़ाइल बी खोजना चाहता हूं कि फ़ाइल ए में से कोई भी शब्द इसमें होता है या नहीं।शब्दों की सूची के साथ grep कैसे करें

मैंने कोशिश की निम्नलिखित लेकिन मेरे लिए काम नहीं करता:

grep -F A B 

उत्तर

77

आप विकल्प -f उपयोग करने की आवश्यकता:

$ grep -f A B 

विकल्प -F करता है एक निश्चित स्ट्रिंग खोज के रूप में -f के लिए है, जहां पैटर्न की एक फाइल निर्दिष्ट। आप दोनों चाहते हैं कि फ़ाइल में केवल निश्चित तार हैं और regexps नहीं हैं।

$ grep -wFf A B 

पढ़ें man grep हर संभव तर्क और वे क्या करते के वर्णन के लिए:

$ grep -Ff A B 

तुम भी केवल संपूर्ण शब्दों को मिलान के लिए -w विकल्प हो सकता है।

+4

'-w' विकल्प विवरण के लिए +1। –

+3

यदि आप regexps का उपयोग नहीं करना चाहते हैं तो बस एक अनुकूलन है? – phoenix

+1

@ फीनिक्स बिल्कुल। –

0

बड़ी फ़ाइलों में शब्दों की एक बहुत लंबी सूची देखने के लिए, इसे और अधिक egrep उपयोग करने के लिए कुशल हो सकता है:

remove the last \n of A 
$ tr '\n' '|' <A> A_regex 
$ egrep -f A_regex B 
संबंधित मुद्दे