बड़े मल्टी-जीबी टेक्स्टफाइल में डुप्लिकेट लाइनों को कैसे हटाएं?


16

मेरा प्रश्न इस प्रश्न के समान है लेकिन विभिन्न बाधाओं के एक जोड़े के साथ:

  • मेरे पास एक बड़ा \nसीमांकित शब्द सूची है - प्रति पंक्ति एक शब्द। फ़ाइलों का आकार 2GB से लेकर 10GB तक बड़ा है।
  • मुझे किसी भी डुप्लिकेट लाइनों को हटाने की आवश्यकता है।
  • प्रक्रिया डुप्लिकेट को हटाने के दौरान सूची को सॉर्ट कर सकती है लेकिन आवश्यक नहीं है।
  • नए अनूठे वर्डलिस्ट को आउटपुट करने के लिए विभाजन पर पर्याप्त जगह है।

मैंने इन दोनों तरीकों की कोशिश की है, लेकिन वे दोनों मेमोरी त्रुटियों से विफल हो जाते हैं।

sort -u wordlist.lst > wordlist_unique.lst
awk '!seen[$0]++' wordlist.lst > wordlist_unique.lst
awk: (FILENAME=wordlist.lst FNR=43601815) fatal: assoc_lookup: bucket-ahname_str: can't allocate 10 bytes of memory (Cannot allocate memory)

मैं किन अन्य तरीकों की कोशिश कर सकता हूं?


जवाबों:


18

आउटपुट पुनर्निर्देशित करने के बजाय -o/ --output=FILEविकल्प के साथ सॉर्ट का उपयोग करने का प्रयास करें । तुम भी / के buffer-sizeसाथ सेटिंग की कोशिश कर सकते हैं । इसके अलावा, प्रयास करें / । और मैन पेज पढ़ें, यह मेरे द्वारा दी गई सभी जानकारी प्रदान करता है।-S--buffer-size=SIZE-s--stable

पूर्ण कमांड जो आप उपयोग कर सकते हैं, जो आप कर रहे हैं उसके लिए काम कर सकते हैं:

sort -us -o wordlist_unique.lst wordlist.lst

आप निम्न URL भी पढ़ना चाह सकते हैं:

http://www.gnu.org/s/coreutils/manual/html_node/sort-invocation.html

वह अधिक अच्छी तरह से आदमी पृष्ठ की तुलना में समझाता है।


सुझाव के लिए धन्यवाद, दुर्भाग्य से --आउटपुट का उपयोग करके अभी भी मेमोरी त्रुटि को ठीक नहीं किया गया है। चल रहा है कि अभी भी मुझे देता है sort: write failed: /root/tmp/sortVxscLn: No space left on device। समस्या थोड़ी कष्टप्रद है कि यह तुरंत विफल नहीं होती है। ऐसा लगता है कि इससे पहले कि आप गलती करेंगे स्मृति समाप्त होने के लिए इंतजार करना होगा।
greatwolf

8
@ विक्टर टी .: यह मेमोरी त्रुटि से बाहर नहीं है, लेकिन डिस्क स्थान त्रुटि से बाहर है। आपके डेटा के लिए एक अलग फाइल सिस्टम पर / रूट है? यदि ऐसा है, तो sortअधिक खाली स्थान वाले फाइल सिस्टम का उपयोग करने के लिए -T / - अस्थायी-निर्देशिका विकल्प का उपयोग करें।
5

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