मेरे पास ऐसी फाइलें हैं जो एक प्रोग्राम द्वारा उत्पन्न की गईं, जिन्होंने रिकॉर्ड के अंत में नई सुर्खियां नहीं बनाईं। मैं रिकॉर्ड्स के बीच नई कड़ियाँ डालना चाहता हूँ, और मैं एक सरल सेड स्क्रिप्ट के साथ ऐसा कर सकता हूँ:
sed -e 's/}{/}\n{/g'
समस्या यह है कि इनपुट फाइलें कई गीगाबाइट आकार में हैं, और इसलिए इनपुट लाइनों को sed करने के लिए लंबाई में कई GB हैं। sed स्मृति में एक रेखा रखने की कोशिश करता है, जो इस मामले में काम नहीं करता है। मैंने --unbufferedविकल्प की कोशिश की , लेकिन यह सिर्फ इसे धीमा बनाने के लिए लग रहा था और इसे सही तरीके से खत्म नहीं होने दिया।
trअनुवाद करने के लिए }में \nऔर उसके बाद का उपयोग sedएक जोड़ने के लिए }प्रत्येक पंक्ति के अंत में? इस तरह:tr '}' '\n' < your_file.txt| sed 's/$/}/'
printf "\n" >> file
}{जब तक कि यह कई गीगाबाइट लंबे समय तक पर्याप्त न हो जाए।
dd if=file cbs=80 conv=unblockवह ऐसा करेगा - लेकिन यह शायद ही कभी इतना आसान है।