मैंने अंतर और पैच के बारे में पढ़ा है लेकिन मैं यह नहीं समझ सकता कि मुझे क्या चाहिए। मुझे लगता है कि यह बहुत सरल है, इसलिए मेरी समस्या को दिखाने के लिए इन दो फाइलों को लें:
a.xml
<resources>
<color name="same_in_b">#AAABBB</color>
<color name="not_in_b">#AAAAAA</color>
<color name="in_b_but_different_val">#AAAAAA</color>
<color name="not_in_b_too">#AAAAAA</color>
</resources>
b.xml
<resources>
<color name="same_in_b">#AAABBB</color>
<color name="in_b_but_different_val">#BBBBBB</color>
<color name="not_in_a">#AAAAAA</color>
</resources>
मैं एक आउटपुट लेना चाहता हूं, जो इस तरह दिखता है (ऑर्डर मायने नहीं रखता):
<resources>
<color name="same_in_b">#AAABBB</color>
<color name="not_in_b">#AAAAAA</color>
<color name="in_b_but_different_val">#BBBBBB</color>
<color name="not_in_b_too">#AAAAAA</color>
<color name="not_in_a">#AAAAAA</color>
</resources>
मर्ज में इस सरल नियमों के साथ सभी पंक्तियाँ होनी चाहिए:
- कोई भी लाइन जो केवल एक फाइल में है
- यदि किसी पंक्ति में समान नाम का टैग है लेकिन एक भिन्न मान है, तो दूसरे से मान लें
मैं इस कार्य को बैश स्क्रिप्ट के अंदर लागू करना चाहता हूं, इसलिए इसे अलग और पैच के साथ करने की आवश्यकता नहीं होनी चाहिए, अगर एक और प्रोग्राम एक बेहतर फिट है
diff
आपको बता सकता है कि कौन सी लाइनें एक फ़ाइल में हैं, लेकिन दूसरी नहीं, बल्कि पूरी लाइनों की ग्रैन्युलैरिटी पर।patch
केवल एक ही फाइल के समान परिवर्तन करने के लिए उपयुक्त है (शायद एक ही फाइल का एक अलग संस्करण, या एक पूरी तरह से अलग फाइल जहां प्रत्येक परिवर्तन के लिए लाइन नंबर और आसपास की लाइनें आपकी मूल फ़ाइल के समान हैं)। तो नहीं, वे इस कार्य के लिए विशेष रूप से उपयुक्त नहीं हैं। आप एक नज़र रखना चाह सकते हैंwdiff
लेकिन समाधान के लिए शायद एक कस्टम स्क्रिप्ट की आवश्यकता होती है। चूंकि आपका डेटा XML जैसा दिखता है, इसलिए आप कुछ XSL टूल की तलाश कर सकते हैं।