मेरी एक विशाल (2 GiB तक) की टेक्स्ट फाइल में हर लाइन की लगभग 100 डुप्लिकेट डुप्लिकेट हैं (मेरे मामले में बेकार है, क्योंकि फाइल CSV जैसी डेटा टेबल है)।
जबकि (अधिमानतः, लेकिन यह महत्वपूर्ण प्रदर्शन को बढ़ावा देने के लिए बलिदान किया जा सकता है) मूल अनुक्रम क्रम को बनाए रखने के लिए सभी पुनरावृत्तियों को हटाने की आवश्यकता है। परिणाम में प्रत्येक पंक्ति को अद्वितीय होना है। यदि 100 समान लाइनें थीं (आमतौर पर डुप्लिकेट फ़ाइल में फैले हुए हैं और पड़ोसी नहीं होंगे) तो केवल एक ही तरह का शेष होना है।
मैंने इसे लागू करने के लिए स्काला में एक कार्यक्रम लिखा है (इसे जावा समझें अगर आपको स्काला के बारे में जानकारी नहीं है)। लेकिन हो सकता है कि तेजी से सी-लिखित देशी उपकरण इस तेजी से करने में सक्षम हैं?
अद्यतन: awk '!seen[$0]++' filename
समाधान मेरे लिए ठीक तब तक काम कर रहा था जब तक कि फाइलें 2 GiB या उससे छोटी थीं, लेकिन अब जब मैं 8 GiB फाइल को साफ करने के लिए हूं तो यह किसी भी अधिक काम नहीं करता है। यह 4 GiB रैम और 64-बिट विंडोज 7 PC के साथ 4 गीगा RAM और 6 GiB स्वैप के साथ एक मैक पर अनन्तता ले रहा लगता है। और मैं इस अनुभव को देखते हुए 4 gb RAM के साथ लिनक्स पर इसे आज़माने में उत्साह महसूस नहीं करता।
sort -u
शायद तेज हो जाएगा।