-F
नियमित अभिव्यक्ति के विपरीत (निश्चित स्ट्रिंग, देखें ) और -x
(सटीक: पूरी रेखा से मेल खाते) विकल्प।
grep -Fx user1@example.com text_file
के बराबर होगा:
grep '^user1@example\.com$' text_file
(याद रखें कि .
एक नियमित अभिव्यक्ति ऑपरेटर है जो किसी भी चरित्र से मेल खाता है)।
-q
विकल्प का उपयोग करें यदि आप केवल जाँच करना चाहते हैं कि क्या ऐसी कोई रेखा है:
grep -Fxq user1@example.com text_file &&
echo yes, that address is in that file.
यदि खोज करने के लिए लाइन और फ़ाइल का नाम परिवर्तनशील है:
grep -Fxqe "$email" < "$file"
या
grep -Fxq -- "$email" < "$file"
आप नहीं चाहते:
grep -Fxq "$email" "$file"
के रूप में अगर समस्याओं का कारण होगा $email
या के $file
साथ शुरू कर दिया -
।
यदि फ़ाइल (आपके वर्तमान स्थान में, अधिमानतः C
) सॉर्ट की जाती है , तो आप संभवतः comm
इसके बजाय का उपयोग करके चीजों को गति दे सकते हैं grep
:
printf '%s\n' user1@example.com | comm -12 - text_file
आपके द्वारा जांच के लिए कई ईमेल पते होने पर (उदाहरण के लिए किसी अन्य सॉर्ट की गई फ़ाइल में) लाभ अधिक स्पष्ट हो जाएगा:
comm -12 text_file emails_to_check
इससे तेज़ होगा:
grep -Fxf emails_to_check text_file