बड़ी टेक्स्ट फ़ाइल की पहली पंक्ति संपादित करें


16

मेरे पास एक विशाल पाठ फ़ाइल है, स्मृति में पृष्ठांकित होने के लिए बहुत बड़ी है। इस पाठ फ़ाइल के साथ मुझे केवल पहली पंक्ति संपादित करनी होगी (इसकी CSV फ़ाइल और मुझे शीर्षक बदलने की आवश्यकता है)।

वहाँ एक आसान तरीका है मैं यह कर सकता हूँ?


क्या कोई कारण है कि आप सिर्फ एक पाठ संपादक का उपयोग नहीं कर सकते हैं?
13

फ़ाइल बहुत बड़ी है, इस मशीन पर मेरी अधिकतम आभासी मेमोरी से 20 गुना अधिक बड़ी है।
सिंह

1
काफी उचित। मैं इस धारणा के तहत था कि अच्छे पाठ संपादक बहुत बड़ी फ़ाइलों से निपट सकते हैं क्योंकि वे केवल उतना ही लोड करते हैं जितना उन्हें मेमोरी में करने की आवश्यकता होती है, लेकिन कुछ अन्य प्रश्नों को पढ़ने के बाद ऐसा लगता है कि उनमें से अधिकांश के साथ समस्याएं हैं।
डेंजर

@dangph True ... अजीब हो सकता है, लेकिन कुछ पुराने और अप्रचलित "टेक्स्ट एडिटर्स" (या तथाकथित) जैसे edlinms-dos के लिए या edUnix के लिए यह समस्या दिखाई नहीं दी, लेकिन जहां केवल लाइन एडिटर हैं ... RAM पर ये समय एक दुर्लभ और कीमती चीज थी और गिगाबाइट्स में एक फ़ाइल का आकार विश्वास करना असंभव था! ;)
लौरेंट

चीजों को स्पष्ट करने के लिए;): मुझे याद नहीं है ed!!! लेकिन यह इस मामले में एक अच्छा फिट होगा (यकीन नहीं कि यह इस आकार की एक फाइल को संभाल सकता है ...)
laurent

जवाबों:


22

आप यह lessदेखने के लिए उपयोग कर सकते हैं कि आप क्या sedबदलाव करना चाहते हैं और बदलाव करने के लिए उपयोग करना चाहते हैं। इस तरह से आप पूरी फ़ाइल को लोड किए बिना संपादित करते हैं।

दूसरा तरीका यह है कि फाइल को विभाजित करें, संपादित करें और फिर से जुड़ें:

split -b 10000k <file>

and to join:

cat xa* > <file>

sed के लिए upvote।
एट्रॉन

शानदार, स्प्लिट और जॉइन वही था जिसकी मुझे तलाश थी, धन्यवाद।
lynks

निश्चित रूप से, sed बेहतर है क्योंकि यह पूरी फ़ाइल को आसानी से खोज / बदल सकता है लेकिन अगर उसे केवल पहली पंक्ति को बदलना है, तो विभाजन खराब नहीं है और तेज़ भी है।
लॉरेंट

4
पूरी फाइल के ऊपर सेड को चलने में घंटों लग जाते थे (जो कि सिर्फ आधे टीबी के अंतर्गत होता है), परिवर्तन केवल पहली पंक्ति में थे, इसे अलग करना समझदार लगता है।
lynks

3

यदि आपका संशोधन लाइन की लंबाई को बदलता है, तो पूरी फ़ाइल को फिर से लिखना होगा, उदाहरण के लिए SO पर इस चर्चा को देखें । आपको शायद डेटा को डेटाबेस में सहेजने पर विचार करना चाहिए।

इसे ध्यान में रखते हुए, आप फ़ाइल को sed के साथ संपादित कर सकते हैं। पहली पंक्ति को बदलने के लिए, ऐसा कुछ करें (GNU sed):

< oldfile sed '1c\new_heading' > newfile
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.