2013-10-28 7 views
7

में एक बड़ी सीएसवी फ़ाइल को विभाजित करने के लिए कैसे मैं भागों में एक बहुत बड़ी सीएसवी फ़ाइल को विभाजित कर रहा हूं। जब भी मैं निम्न आदेश चलाता हूं। पूरी तरह से विभाजित नहीं है बल्कि मुझे निम्नलिखित त्रुटि देता है। मैं पूरी फाइल को विभाजित करने से कैसे बच सकता हूं।यूनिक्स कमांड लाइन

 awk -F, '{print > $2}' test1.csv 

     awk: YY1 makes too many open files 
     input record number 31608, file test1.csv 
     source line number 1 

उत्तर

15

बस close संभालने, मौजूदा निर्देशिका में दूसरा CSV कॉलम के मूल्य के रूप में ही नाम की एक फ़ाइल में पूरे लाइन आउटपुट लिखने के बाद फाइलें:

awk -F, '{print > $2; close($2)}' test1.csv 
+0

पूरी तरह से काम करता है धन्यवाद – user2498657

0

आप लाइनों की एक बहुत कुछ होना आवश्यक है। क्या आप सुनिश्चित हैं कि दूसरी पंक्ति उन रिकॉर्ड्स को एक व्यक्तिगत फ़ाइल में रखने के लिए पर्याप्त दोहराती है? वैसे भी, अंत तक फाइलें खुली हैं। आपको एक ऐसी प्रक्रिया की आवश्यकता होगी जो उपयोग में नहीं होने पर फ़ाइल हैंडल को बंद कर सके।

बचाव के लिए पर्ल। फिर।

#!perl  
while(<>) { 
    @content = split /,/, $_; 
    open (OUT, ">> $content[1]") or die "whoops: $!"; 
    print OUT $_; 
    close OUT; 
} 

उपयोग: script.pl your_monster_file.csv

कोई उद्धृत क्षेत्रों आदि

+0

आपके लिए प्रतिक्रिया के लिए बहुत बहुत धन्यवाद, मैं फ़ाइल में दूसरे कॉलम का उपयोग कर रहा हूं। मैं आपकी पर्ल स्क्रिप्ट – user2498657

+0

आज़माउंगा बस ध्यान दिया कि मैंने ओपन कमांड पर ">>" को याद किया। इसके बिना केवल अंतिम पंक्ति प्राप्त होगी। – PaulProgrammer

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