Https://blog.mafr.de/2010/05/23/sorting-large-files/ और /unix//a/88704/9689 पर आधारित :
split -n l/20 input input-
for inpf in input-* ; do
sort --parallel="$(nproc --all)" "${inpf}" > sorted-"{$inpf}"
done
sort -m sorted-input-* > sorted-input
अद्यतन करें:
ऊपर दिए गए उत्तरों से हम देखते हैं कि sort
स्निपेट का उल्लेख पहले से ही करता है - यानी एक्सटर्नल आर-वे मर्ज । तो बस चलने के बाद:
sort --parallel="$(nproc --all)" -u input > output
पर्याप्त होना चाहिए।
सीमा के बारे में मेरी वर्तमान धारणाएं (कोड की जाँच किए बिना) हैं:
- अधिकतम लाइन की लंबाई भौतिक मेमोरी की मात्रा द्वारा सीमित है। सॉर्ट करने के लिए कम से कम दो मेमोरी में फिट होना चाहिए
- लाइनों की राशि - मुझे जानकारी नहीं है
- फ़ाइल का आकार - बेशक फाइल सिस्टम द्वारा
- ऑपरेटिंग सिस्टम के आधार पर समानांतर में खोली गई फ़ाइलों की मात्रा ( यह इंगित करने के लिए धन्यवाद डायोमिडिस स्पिनेलिस !)
(यह उत्तर सामुदायिक विकि के रूप में चिह्नित है - इसे बेहतर बनाने के लिए प्रोत्साहित महसूस करें! :))