2013-02-20 14 views
17

का उपयोग कर फ़ाइल को विभाजित करने के लिए मैं फ़ाइल को विभाजित करने के लिए निम्न आदेश का उपयोग कर रहा हूं। इसे हर 50,000 लाइनों को विभाजित करना चाहिए और 4 अंकों के न्यूमेरिक प्रत्यय का उपयोग करना चाहिए। फाइल लगभग 140 मिलियन लाइनें है।एक संख्यात्मक प्रत्यय

split -d -l -n 4 50000 domains.xml domains_ 

लेकिन जब मैं चलाने है कि मैं इस त्रुटि हो रही है:

split: -n: invalid number of lines 
Try `split --help' for more information. 

क्या इस के लिए सही कमांड है?

उत्तर

4

मैं awk का उपयोग करूंगा। यह आपको आपकी आउटपुट फाइलों और फ़ाइल नामों पर बेहतर नियंत्रण देता है। यह सिर्फ जल्दी पूछना चाहिए। यहाँ 20 लाइन ब्लॉक में एक 100 लाइन फ़ाइल को विभाजित करने का तरीका देखें:

awk 'NR%20==1 { file = FILENAME "_" sprintf("%04d", NR+19) } { print > file }' domains.xml 

इस तरह कुछ फ़ाइलों को बनाना चाहिए:

file_0020 
file_0040 
file_0060 
file_0080 
file_0100 

तदनुसार समायोजित करें। HTH।

32

के बाद से जीएनयू split से प्राथमिक सहायता का कहना है:

Usage: /usr/gnu/bin/split [OPTION]... [INPUT [PREFIX]] 
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default 
size is 1000 lines, and default PREFIX is 'x'. With no INPUT, or when INPUT 
is -, read standard input. 

Mandatory arguments to long options are mandatory for short options too. 
    -a, --suffix-length=N generate suffixes of length N (default 2) 
     --additional-suffix=SUFFIX append an additional SUFFIX to file names. 
    -b, --bytes=SIZE  put SIZE bytes per output file 
    -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file 
    -d, --numeric-suffixes[=FROM] use numeric suffixes instead of alphabetic. 
            FROM changes the start value (default 0). 
    -e, --elide-empty-files do not generate empty output files with '-n' 
     --filter=COMMAND write to shell COMMAND; file name is $FILE 
    -l, --lines=NUMBER  put NUMBER lines per output file 
    -n, --number=CHUNKS  generate CHUNKS output files. See below 
    -u, --unbuffered  immediately copy input to output with '-n r/...' 
     --verbose   print a diagnostic just before each 
          output file is opened 
     --help  display this help and exit 
     --version output version information and exit 

यह मेरे लिए लगता है कि आप थोड़ा अपने विकल्पों को पुनर्व्यवस्थित करने की आवश्यकता:

split -a 4 -d -l 50000 domains.xml domains_ 
5

(मैनपेज से, GNU coreutils 8.21) आपको जो चाहिए वह -ए/- प्रत्यय-लंबाई = एन (लम्बाई एन (डिफ़ॉल्ट 2) के प्रत्यय उत्पन्न करता है), नहीं -एन/- संख्या = चंक्स (चुंक आउटपुट फाइलें उत्पन्न करें)

split -d -l 50000 -a 4 domains.xml domains_ 

और आप मिलना चाहिए: domains_0000, domains_0001 ...

0

अगर यह आपकी मदद करता है मैं नहीं जानता, लेकिन यदि आप करने के लिए एक 1 जोड़ने के अपने फ़ाइलनाम उपसर्ग यानी outfile1 आप के साथ खत्म हो जाएगा:

outfile101 
outfile102 
outfile103 

मैं समझता हूं कि यह वह नहीं हो सकता है जो आप खोज रहे हैं, लेकिन विभिन्न कार्यक्रम नौकरी के सरणी में अग्रणी शून्यों का विश्लेषण नहीं करते हैं और इससे कोई फर्क नहीं पड़ता कि कंप्यूटर वैज्ञानिक "हमेशा शून्य से गिनते हैं"। कम से कम इस तरह से आप अपनी फाइलों को व्यापक कार्यक्रमों के साथ पार्स कर सकते हैं।

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