2010-04-23 5 views
5

मैंने कुछ खोज कर लिया है लेकिन मैं जो कुछ भी कर रहा हूं, वह नहीं मिल सकता है।शैल स्क्रिप्ट - टेक्स्ट की लाइनों की तुलना करना, मैचों को हटाने

मेरे पास दो फाइलें हैं: "a.txt", "b.txt"।

प्रत्येक में न्यूलाइन द्वारा अलग किए गए ईमेल पते की एक सूची होती है।

"a.txt" में सभी पंक्तियों के लिए, मुझे "b.txt" में कहीं भी एक मैच की जांच करने की आवश्यकता है। यदि ऐसा है, तो "a.txt" में ईमेल पता को हटा दिया जाना चाहिए।

मैं मैक ओएस एक्स का उपयोग कर रहा है, तो एक खोल स्क्रिप्ट मदद कर सकता है के लिए देख रहा हूँ (वैकल्पिक रूप से, एक नई फ़ाइल "c.txt" उत्पादन है कि अगर आसान होता है। के साथ बनाया जा सकता है), या पॉइंटर्स कि मैं स्क्रिप्ट बनाने के बारे में कैसे जाना होगा। किसी भी मदद के लिए धन्यवाद।

उत्तर

3
grep -F -x -f b.txt -v a.txt > c.txt 

या, समतुल्य रूप,

fgrep -x -f b.txt -v a.txt 
+0

आपको धन्यवाद जो हर किसी के लिए बहुत मदद करता है। मैंने इस विशेष टिप का इस्तेमाल किया, लेकिन सभी की मदद की सराहना करते हैं। – SirRatty

2

उपयोग comm आदेश इस तरह:

cat a.txt | sort > a2.txt 
cat b.txt | sort > b2.txt 
comm -23 a2.txt b2.txt > c.txt 
0

मैं ग्रेप/fgrep जवाब पसंद है, लेकिन यहाँ एक और बिल्ली/प्रकार विकल्प है :

cat a.txt b.txt | sort -u > c.txt 
+0

जो ओपी की तलाश में नहीं है। – ghostdog74

+0

ओह। आप सही हे; मैंने पोस्ट को पूरी तरह से गलत पढ़ा। क्षमा करें SirRatty! –