कैसे शब्दों की एक सूची के साथ grep करने के लिए


84

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

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

grep -F A B

जवाबों:


116

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

$ grep -f A B

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

$ grep -Ff A B

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

$ grep -wFf A B

man grepसभी संभावित तर्कों के विवरण के लिए पढ़ें और वे क्या करते हैं।


4
यदि आप regexps का उपयोग नहीं करना चाहते हैं तो क्या Is -F सिर्फ एक अनुकूलन है?
फीनिक्स

एक निर्देशिका ट्री बी में फाइल ए में शब्दों के सभी घटनाओं को खोजने के बारे में क्या है , केवल बी में सभी मैचों के फ़ाइल नाम को सूचीबद्ध करना है?
5

2

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

remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.