2009-09-19 6 views
6

पर्ल स्क्रिप्ट लिखते समय, मुझे फ़ाइल के केवल एक पंक्ति में अल्पविराम अलगाव के साथ उपयोगकर्ता नाम लिखने की आवश्यकता मिली।क्या पर्ल से बनाई गई टेक्स्ट फ़ाइलों के लिए लाइन लंबाई सीमा है?

यही कारण है कि मैं जानना चाहता हूं कि .txt फ़ाइल में लाइन के अधिकतम आकार पर कोई प्रतिबंध है।

+1

आप किस फ़ाइल आकार को बनाने की उम्मीद कर रहे हैं? –

उत्तर

12

पाठ फ़ाइलें किसी भी अन्य फ़ाइलों और न्यू लाइन चरित्र की तरह हैं, किसी भी othe चरित्र की तरह है, इसलिए केवल सामान्य फ़ाइल आकार प्रतिबंध लागू होते हैं (पुराने फाइल सिस्टम पर 4Gb आकार सीमा, फ़ाइल डिस्क आदि पर फिट होगा)

आपको इसे पढ़ने और लिखने में कोई समस्या नहीं आती है, जब तक कि आप इसे लाइन से लाइन नहीं पढ़ रहे हों-आप स्मृति से बाहर हो सकते हैं या फिर बफर ओवरफ्लो का सामना कर सकते हैं। यह किसी भी टेक्स्ट एडिटर या टेक्स्ट प्रोसेसिंग प्रोग्राम (जैसे कि sed या awk) में हो सकता है, क्योंकि, ओएस कर्नेल के विपरीत, उन पंक्तियों में अलग-अलग मामलों में

मैं प्रति पंक्ति एक उपयोगकर्ता को रखने का सुझाव दूंगा, क्योंकि इसे पढ़ने के लिए और अधिक प्राकृतिक है और जब आप किसी बाहरी प्रोग्राम के साथ फ़ाइल को संसाधित करते हैं तो कम त्रुटि-प्रवण।

+0

कम से कम kwrite और vi लाइन आकार से प्रभावित नहीं होते हैं (4 एमबी एकल लाइन एक्सएमएल फ़ाइल पर परीक्षण) –

+0

निश्चित रूप से एक सीमा है। इसे डिस्क पर फिट होना है, और यदि आप इसे लाइन-बाय-लाइन पढ़ रहे हैं, तो इसे स्मृति में फिट होना होगा।इसके अलावा, आपको 4 जीबी से अधिक फ़ाइलों से निपटने के लिए बड़ी फ़ाइल समर्थन की आवश्यकता हो सकती है। –

+0

@brian d foy: चूंकि आप यहां अधिक अनुभवी हैं, इसलिए, मैं आपकी सलाह का पालन कर रहा हूं और कप्तान स्पष्ट खेल रहा हूं, इसलिए अब मेरी पोस्ट कहती है कि डिस्क पर एक फ़ाइल उस डिस्क के आकार से अधिक नहीं होनी चाहिए। आह। –

3

आपके फाइल सिस्टम को छोड़कर कोई आकार सीमा नहीं है जो शायद 2TB या कुछ है।

2

नहीं, तब तक ऐसी कोई सीमा नहीं है जब तक कि आप किसी भी फ़ाइल-आकार सीमा को हिट नहीं करते।

1

कुछ पुराने यूनिक्स सिस्टम पर, कुछ पाठ उपयोगिताओं (जैसे शामिल हों, क्रमबद्ध करें और यहां तक ​​कि कुछ पुराने अजीब) की अधिकतम पंक्ति आकार पर सीमा है। मुझे लगता है कि यह उपयोगिता की सीमा है लेकिन ओएस नहीं। जहां तक ​​मुझे पता है, जीएनयू यूटिलिटीज की ऐसी सीमा नहीं है और इसलिए लिनक्स को कभी भी यह समस्या नहीं है।

+0

मुझे आईआरईएक्स और एईक्स के पुराने संस्करण पर यह समस्या होती थी। फिर मैंने अपनी होम निर्देशिका में जीएनयू टेक्स्ट्यूटिल्स (कोर्यूटल्स में विलय नहीं किया) स्थापित किया, जिसने समस्या को हल किया – user172818

-1

फ़ाइल का आकार आपके ओएस की फाइल सिस्टम पर निर्भर करता है। उपकरण के लिए इस तरह की कोई सीमा नहीं है (या कम से कम मैंने कभी नहीं देखा है ..)

+0

कुछ औजारों की सीमाएं हैं क्योंकि वे चार-बाइट इंट एड्रेस स्पेस का उपयोग करते हैं, यही कारण है कि कुछ टूल्स में बड़ी फ़ाइल समर्थन होती है। –

3

केवल एक चीज जिसकी आपको चिंता करने की आवश्यकता है वह फ़ाइल का आकार है जिसे आप बना सकते हैं और फ़ाइल का आकार पढ़ सकते हैं।

कंप्यूटर लाइनों के बारे में कुछ नहीं जानते हैं, जो फ़ाइल में बाइट्स की व्याख्या है। हम निर्णय लेते हैं कि वर्णों का कुछ अनुक्रम है जो एक रेखा के अंत का आंकलन करते हैं, और फिर हमारे कार्यक्रमों को तब तक फ़ाइल से बाहर ले जाने के लिए बताते हैं जब तक कि वह अनुक्रम को हिट नहीं करता। हमारे लिए, यह एक रेखा है।

उदाहरण के लिए, आप अपनी पाठ फ़ाइल को अल्पविराम से समाप्त करने के लिए एक लाइन को परिभाषित कर सकते हैं:

$/ = ','; 

while(<DATA>) 
    { 
    chomp; 
    print "Line is: $_\n"; 
    } 

__DATA__ 
a,b,c,d,e,f,g 

जैसे मैं __DATA__ नीचे एक पंक्ति है भले ही यह लग रहा है, यह केवल इसलिए है क्योंकि हम करने के लिए इस्तेमाल कर रहे हैं पुस्तकें। कंप्यूटर किताबें नहीं पढ़ते हैं। इसके बजाय, इस कार्यक्रम के बारे में सोचती अल्पविराम के बीच सब कुछ एक पंक्ति है:

Line is: a 
Line is: b 
Line is: c 
Line is: d 
Line is: e 
Line is: f 
Line is: g 
2

मैं सिर्फ लंबे Kwrite में 1M chrs के बारे में लाइन के साथ ऐसी समस्या भर में आया था।

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

संबंधित मुद्दे