जवाबों:
सबसे स्पष्ट उत्तर केवल अंतर कमांड का उपयोग करने के लिए है और संभवतः इसके लिए --speed-large-files पैरामीटर को जोड़ना एक अच्छा विचार है।
diff --speed-large-files a.file b.file
आप बिना पढ़ी गई फ़ाइलों का उल्लेख करते हैं, इसलिए शायद आपको पहले फाइलों को क्रमबद्ध करना होगा
sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted
आप दूसरी तरह से डायरेक्ट आउटपुट को अलग से पाइप करके एक अतिरिक्त आउटपुट फाइल बनाने से बचा सकते हैं
sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -
जाहिर है ये बहुत सारे उपलब्ध मेमोरी वाले सिस्टम पर चलेंगे और आपको फ्री डिस्क स्पेस की भी बहुत जरूरत होगी।
यह आपके प्रश्न से स्पष्ट नहीं था कि क्या आपने पहले ये कोशिश की है। यदि ऐसा है तो यह जानना उपयोगी होगा कि क्या गलत हुआ (बहुत लंबा समय लगा)। मैंने हमेशा पाया है कि स्टॉक सॉर्ट और अलग-अलग कमांड कम से कम कस्टम कमांड्स को तब तक करते हैं जब तक कि फाइलों के कुछ बहुत ही डोमेन विशिष्ट गुण नहीं होते हैं जो चीजों को अलग तरीके से करना संभव बनाते हैं।
diff <(command 1) <(command 2)
<(cmd1) <(cmd2)
वाक्य रचना क्यों काम करती है (जैसा कि मानक इनपुट को दो बार पुनर्निर्देशित करने जैसा लगता है!), कोशिश करें echo hello <(cmd1) <(cmd2)
। आपको कुछ ऐसा दिखाई देगा, hello /dev/fd/63 /dev/fd/62
जो अचानक स्पष्ट हो जाता है;)
--speed-large-files
यदि आपके पास पर्याप्त रैम नहीं है तो विकल्प मदद नहीं करता है। इसके अलावा, यदि आप एक बहु-पंक्ति रिकॉर्ड संरचना है जिसे आप संरक्षित करना चाहते हैं, तो पूर्व-छँटाई उपयोगी नहीं है। ऊपर दिए गए विकल्प (@unhammer द्वारा) दिलचस्प हैं, लेकिन इससे आउटपुट rdiff
और bsdiff
बाइनरी है। bdiff
हिरलूम टूलबॉक्स से स्थापित करना एक चुनौतीपूर्ण कार्य की तरह लगता है (हीरूमल डेवटूल, विलुप्त हेडर फाइलें,…) की आवश्यकता होती है। क्या यह वास्तव में प्रयास के लायक है? क्या अन्य विकल्प हैं?
diff
इनपुट्स को क्रमबद्ध करना और प्रोग्राम को यह बताएं कि इनपुट्स क्रमबद्ध हैं, एक बड़े पैमाने पर गति प्रदान करेगा। मैं diff
उस तरह के विकल्प के साथ किसी के बारे में नहीं जानता, लेकिन comm
हल इनपुट मानता है और यह बहुत तेज हो जाएगा अगर यह आपके उद्देश्यों के लिए पर्याप्त है।
comm
इसके लिए बहुत अच्छा काम किया, इसके बारे में पहले कभी नहीं सुना, लेकिन जाहिर तौर पर इसके कोरूटिल्स में।
mkfifo
बनाने के लिए[ab].file.sorted
उनके लिए आउटपुट के रूप में उपयोग करने से पहलेsort
। दोनोंsort
एस&
को पृष्ठभूमि में रखें और दोनों पाइपों को फ़ाइनल के रूप में अलग-अलग उपयोग करें।