मेरे पास एक विशाल (70GB), एक पंक्ति , पाठ फ़ाइल है और मैं इसमें एक स्ट्रिंग (टोकन) को बदलना चाहता हूं। मैं टोकन को बदलना चाहता हूं <unk>
, एक और डमी टोकन ( दस्ताने का मुद्दा )।
मैंने कोशिश की sed
:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
लेकिन आउटपुट फ़ाइल corpus.txt.new
में शून्य बाइट्स है!
मैंने भी पर्ल का उपयोग करने की कोशिश की:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
लेकिन मुझे मेमोरी में त्रुटि हो गई।
छोटी फ़ाइलों के लिए, ऊपर दिए गए दोनों कमांड काम करते हैं।
मैं एक स्ट्रिंग को कैसे बदल सकता हूं ऐसी फाइल है? यह एक संबंधित प्रश्न है, लेकिन किसी भी उत्तर ने मेरे लिए काम नहीं किया।
संपादित करें : 10GB (या जो भी) में से प्रत्येक में फ़ाइल को विभाजित sed
करने और उनमें से प्रत्येक पर आवेदन करने और फिर उनके साथ विलय करने के बारे में cat
क्या है? क्या इसका कोई मतलब है? क्या अधिक सुरुचिपूर्ण समाधान है?
split
साथ उपयोग कर सकते हैं -b
। बारी sed
- बारी से और फिर से इकट्ठा होने की प्रक्रिया में प्रत्येक प्रक्रिया । एक जोखिम यह है कि <unk>
दो फ़ाइलों में विभाजित किया जा सकता है और नहीं मिलेगा ...