अगर मैं linux में 2 डी फाइल में मौजूद स्ट्रिंग के केवल मैच का मिलान करता हूं तो मैं पहली फाइल की लाइनों को कैसे हटा सकता हूं?


0

विचार करें कि मेरे पास दो पाठ फाइलें हैं।

पहला फ़ाइल नाम - "Emails.txt" निम्नलिखित डेटा के साथ:

sale@gmail.com
info@yahoo.com
all@gmail.com
help@domain.com
abcdsale@gmail.com
abcd.info@yahoo.com

निम्नलिखित स्ट्रिंग्स के साथ दूसरी टेक्स्ट फ़ाइल - "Roles.txt":

sale@
info@
all@
help@

1 टेक्स्ट फ़ाइल "Emails.txt" में सभी लाइनों को कैसे हटाएं यदि यह दूसरी टेक्स्ट फाइल "Role.txt" में मौजूद किसी भी लाइन के केवल स्टिंग से मेल खाती है?

नई फ़ाइल का वांछित आउटपुट होना चाहिए:

abcdsale@gmail.com
abcd.info@yahoo.com

मैंने प्रयोग करने की कोशिश की

grep -vf Role.txt Emails.txt

लेकिन, यह कमांड रोलटैक्स के सभी वर्णों से मेल खाने पर लाइन को हटा भी देता है।

मैं केवल भूमिका से हटाना चाहता हूं। यह भूमिका के अनुसार EXACT से मेल खाती है, और वांछित स्ट्रिंग से पहले अन्य वर्ण होने पर सब कुछ स्वाइप करें।

यहाँ किसी ने प्रत्येक पंक्ति के अंत में सटीक मिलान स्ट्रिंग लाइन को हटाने के लिए एक समान समाधान दिया, लेकिन इसमें मुझे प्रत्येक लाइनों की शुरुआत में उसी के लिए रेजरेक्स की आवश्यकता है।

जवाबों:


2

दूसरी फ़ाइल को इस तरह दिखना चाहिए:

^sale@
^info@
^all@
^help@

इसलिये ^ एक पंक्ति की शुरुआत से मेल खाता है।

आप फ़ाइल को फिर से बना सकते हैं sed -i 's/^/^/' Role.txt। स्पष्ट होने के लिए: यह फ़ाइल को बदल देगा। फिर आपकी मूल आज्ञा

grep -vf Role.txt Emails.txt

काम करेगा।


वैकल्पिक रूप से, आपके साथ मूल Role.txt, एक शेल में जो प्रक्रिया प्रतिस्थापन का समर्थन करता है (जैसे बाश):

grep -vf <(sed 's/^/^/' Role.txt) Emails.txt

इस मामले में sed कहते हैं ^ मक्खी और पर अक्षर Role.txt कुछ नहीं बदला है।


उत्तम! यह बहुत अच्छा काम करता है। :)
Joney Walker

इसलिए यदि मैं फ़ाइल के अंत में भी ऐसा ही करना चाहता हूं, तो क्या मैं लाइन के अंत में ^ जोड़ भी दूंगा? जैसे: @ domail.co ^ ऐसा @ domain.co.uk छोड़ दिया जाएगा? या क्या हमें $ के साथ अंत का विकल्प देना चाहिए?
Joney Walker

@ जॉनीवल्कर नहीं, आप शायद चाहते हैं $। कृपया शोध करें नियमित अभिव्यक्ति
Kamil Maciorowski

Ok मिल गया ... यह काम करता है: grep -vf & lt; (sed 's / $ / $ /' Test2.txt) Text1.txt
Joney Walker
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.