मैं फ़ाइल में नई पंक्तियाँ लिखने के लिए diff और पैच का उपयोग करने में सक्षम होना चाहूंगा। स्पष्ट करने के लिए कि मेरा क्या मतलब है:
मूल फ़ाइल: test1.repo
को बाहर = मोंगो *
को बाहर = SQLite *
को बाहर = PostgreSQL *
नई फ़ाइल: test2.repo
को बाहर = मोंगो *
को बाहर = PostgreSQL *
को बाहर = mysql *
इसलिए मैं diff -u test1.repo test2.repo > repo.patchअंतर को खोजने के लिए कमांड चलाता हूं , सरल पर्याप्त। repo.patchमैंने अभी-अभी जो फ़ाइल बनाई है, उसे देखते हुए मैं आउटपुट देखता हूँ:
को बाहर = मोंगो *
-exclude = SQLite *
को बाहर = PostgreSQL *
+ को बाहर = mysql *
यदि मैं पैच का उपयोग करता हूं, हालांकि, यह उस पर लिखेगा जो प्रभावी रूप से मेरे पास केवल डेटा है test2.repo। क्या केवल नई लाइनें लिखने के लिए पैच प्राप्त करने का एक तरीका है ( कुछ भी + से शुरू होता है )? मैं मूल रिपॉजिटरी में लाइनें जोड़ना चाहूंगा, लेकिन किसी भी कस्टमाइज़ेशन को नष्ट नहीं करूंगा जो उन्होंने पहले ही अपनी फ़ाइल में कर दिया है।
--किसी कारण से शुरू होते हैं । व्यक्तिगत रूप से मैं सिर्फ संघर्ष को सुलझाने के लिए पैच को मैन्युअल रूप से संपादित करता हूं।
cat <(head -n 1 repo.patch) <(grep -ve '^-' repo.patch) | patch@frostschutz द्वारा बताई गई समस्या का समाधान करने के लिए उपयोग कर सकते हैं । लेकिन इन संशोधित पैच फ़ाइलों के साथ मुझे त्रुटि मिलती है patch: **** malformed patch at line 9:(यानी ईओएफ), क्योंकि आपको @@ -1,4 +1,6 @@लाइनों को संशोधित करने की भी आवश्यकता है ?!
sort -u test1.repo test2.repoभी काम कर सकता है।
sed 's/^-\([^-]\{2\}\)/ \1/'?