2013-04-29 8 views
8

मेरे पास प्रत्येक सारणी के बीच खाली रेखा के साथ 1000 सार तत्वों वाली बड़ी टेक्स्ट फ़ाइल है। मैं इस फ़ाइल को 1000 टेक्स्ट फाइलों में विभाजित करना चाहता हूं। मेरे फ़ाइल की तरहटेक्स्ट फ़ाइल को कई फ़ाइलों में विभाजित करें

16503654 Three-dimensional structure of neuropeptide k bound to dodecylphosphocholine micelles.  Neuropeptide K (NPK), an N-terminally extended form of neurokinin A (NKA), represents the most potent and longest lasting vasodepressor and cardiomodulatory tachykinin reported thus far. 

16504520 Computer-aided analysis of the interactions of glutamine synthetase with its inhibitors.  Mechanism of inhibition of glutamine synthetase (EC 6.3.1.2; GS) by phosphinothricin and its analogues was studied in some detail using molecular modeling methods. 
+0

मैं एक निर्देशिका में बहुत ज्यादा फाइल या निर्देशिका बनाने के लिए से बचने के लिए सुझाव दे सकते हैं। यह निश्चित रूप से स्टेट (2) कॉल धीमा कर सकता है। कुछ हज़ार एक बड़ा मुद्दा नहीं है, लेकिन कुछ दस हजार हो सकते हैं। बेशक यह सीमा मशीन (एचडीडी), ऑपरेटिंग सिस्टम और फाइल सिस्टम पर निर्भर है जिसका आप उपयोग कर रहे हैं। – TrueY

+0

संभावित डुप्लिकेट [सामग्री पर आधारित एक .txt फ़ाइल विभाजित करें] (http://stackoverflow.com/questions/8544684/split-a-txt-file-based-on-content) – tripleee

+0

संभावित डुप्लिकेट [एक फ़ाइल को विभाजित करें डेलीमीटर पर आधारित कई फाइलें] (http://stackoverflow.com/questions/11313852/split-one-file-into-multiple-files-based-on-delimiter) – Gilles

उत्तर

26

आप विभाजन का उपयोग कर सकते हैं और "आउटपुट फ़ाइल प्रति NUMBER लाइनें" 2 पर सेट कर सकते हैं। प्रत्येक फ़ाइल में एक टेक्स्ट लाइन और एक खाली रेखा होगी।

split -l 2 file 
4

कुछ इस तरह दिखता है:

awk 'NF{print > $1;close($1);}' file 

इस फ़ाइल नाम सार संख्या होने के साथ 1000 फाइलों का निर्माण करेगा। यह अजीब कोड उन फाइलों को रिकॉर्ड लिखता है जिनके नाम को पहले फ़ील्ड ($ 1) से पुनर्प्राप्त किया जाता है। यह केवल तभी किया जाता है जब फ़ील्ड की संख्या 0 से अधिक हो (एनएफ)

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद। यह काम करता है लेकिन यह अजीब दिख रहा है: 9276016 बहुत खुली फाइलें बनाता है इनपुट रिकॉर्ड नंबर 35, फ़ाइल pmid.txt स्रोत पंक्ति संख्या 1. मैंने प्रत्येक फाइल के लिए अलग-अलग फाइलों की कोशिश की है जो इसकी लाइन नंबर 35 पर त्रुटि दिखा रही है। क्या इसकी कोई सीमा – shalini

+0

को बंद करने के लिए कमांड को अपडेट किया गया है फाइलें उचित रूप से। – Guru

+0

मुझे एक और समस्या का सामना करना पड़ा। मेरी फ़ाइल में ऐसी स्थिति में सार संख्या के तहत निष्कर्ष या परिणाम से शुरू होने वाली कुछ पंक्तियां हैं, जिनके आदेश में आपने निष्कर्ष और परिणाम नाम के साथ एक अतिरिक्त फ़ाइल उत्पन्न करने का उल्लेख किया है जिसे मैं नहीं चाहता हूं। कृपया मेरी मदद करें – shalini

4

आप हमेशा csplit कमांड का उपयोग कर सकते हैं। यह एक फ़ाइल स्प्लिटर है लेकिन एक रेगेक्स पर आधारित है।

की तर्ज पर

कुछ:

csplit -ks -f /tmp/files INPUTFILENAMEGOESHERE '/^$/' 

यह अपरीक्षित है और हालांकि एक छोटे से फेरबदल पड़ सकता है।

CSPLIT

+0

मैं इसे 'अजीब' समाधानों पर पसंद करता हूं। भाग को अलग करने वाली खाली लाइनों के साथ एक बड़ी फ़ाइल (एलडीआईएफ प्रारूप) को विभाजित करने के लिए, मैंने 'दोहराना पैटर्न' और 'दबाने वाली मिलान रेखा' विकल्प का उपयोग किया: 'csplit-m -f/tmp/फ़ाइलें INPUTFILE '/^\ s * $/'' {*} '' – bovender

+0

सीएसप्लिट के लिए हाँ हुरेय। +1। –

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