`Diff` कमांड को केवल लाइनों की एक निर्दिष्ट श्रेणी से अंतर के लिए देखें


5

क्या पूरी फाइल के बजाय diffकमांड को केवल एक निर्दिष्ट श्रेणी ( लाइन से लाइन से लाइन) के अंतर के लिए देखने का कोई तरीका है ? मुझे दो फ़ाइलों में दो जावास्क्रिप्ट कार्यों के बीच अंतर खोजने की कोशिश करने में कठिनाई हो रही है जो एक ही पंक्ति में नहीं हैं। मैं एक नई फ़ाइल में लाइनों की सीमा को कॉपी कर सकता हूं, दूसरी फ़ाइल के लिए भी ऐसा ही कर सकता हूं, फिर उनकी तुलना करें, लेकिन ऐसा करना थकाऊ होगा क्योंकि विशेष रूप से फाइलों में बहुत अधिक पाठ होता है।

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

diff "code1.js" "code2.js" --suppress-common-lines | tee outputFile

लेकिन यह स्पष्ट रूप से केवल उन रेखाओं को नहीं दिखाता है जिनकी तुलना करने में मेरी दिलचस्पी है। यह उपयोगी होगा यदि मैं एक फ़ाइल में देखने के लिए लाइनों की एक श्रृंखला और दूसरी फ़ाइल में लाइनों की एक अलग श्रेणी निर्दिष्ट कर सकता हूं।

जवाबों:


9
diff <(sed -n 'S1,S2p' file1) <(sed -n 'S3,S4p' file2)

कहाँ पे

  • S1 लाइन फ़ाइल 1 है।
  • S2 अंतिम पंक्ति फ़ाइल 1 है।
  • S3 लाइन फ़ाइल 2 शुरू कर रहा है।
  • S4 अंतिम पंक्ति file2 है।

लंघन लाइन 1-4:

diff <(sed -n '5,10p' file1) <(sed -n '5,10p' file2)

$ more file1
1
2
3
4
5
6
7
8
9
10

$ more file2
11
2
3
4
5
65
7
8
9
10

नतीजा

2c2
< 6
---
> 65

-> यह लाइन 1 पर अंतर को छोड़ देता है।

इसके लिए डेस्कटॉप टूल का उपयोग करना आसान हो सकता है। Meld उत्कृष्ट है (AU पर विषय: https://askubuntu.com/a/2947/15811 ):

Meld एक विजुअल डिफेंस और मर्ज टूल है जो डेवलपर्स पर लक्षित है। मेल्ड आपको फाइलों, निर्देशिकाओं और संस्करण नियंत्रित परियोजनाओं की तुलना करने में मदद करता है। यह दोनों फ़ाइलों और निर्देशिकाओं की दो-और तीन-तरफ़ा तुलना प्रदान करता है, और कई लोकप्रिय संस्करण नियंत्रण प्रणालियों के लिए समर्थन है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.