कई छोटी फ़ाइलों में विभाजन फ़ाइल, newline प्रतीक द्वारा अलग


13

क्या कोई उपयोगिता है जो नईलाइन प्रतीक द्वारा फ़ाइल को विभाजित करती है? यदि किसी फ़ाइल में निम्न पंक्तियाँ हैं, जैसे

aa
bbb
cccc

अगर मैं इसे 3 फ़ाइलों में विभाजित करना चाहता हूं, तो वांछित आउटपुट होगा:

aa, bbbऔर cccc(3 अलग-अलग फाइलों में)

मैंने पहले से ही splitकमांड की जांच की , यह केवल फाइल साइज के हिसाब से फाइल कट करता है, न कि मैं जो चाहता हूं।

यदि मैंने स्वयं एक उपयोगिता नहीं लिखी है, तो क्या कोई मानक उपकरण का उपयोग करना है?


फ़ाइल नाम क्या होना चाहिए?
राहुल पाटिल

आप प्रत्येक पंक्ति की फ़ाइल बनाना चाहते हैं? मैं सही हूँ?
राहुल पाटिल

जवाबों:


14

जब तक मैं कुछ याद नहीं कर रहा हूँ, splitयदि आप -lस्विच का उपयोग करते हैं तो लाइन से अलग हो जाता है :

   -l, --lines=NUMBER
          put NUMBER lines per output file

इसलिए

split -l 1 inputfile

आपको जो चाहिए वो करना चाहिए।


4
awk '{print > $0".txt" }'  inputfile

उन पंक्तियों की सामग्री ( .txtएक्सटेंशन के साथ ) के नाम पर इनपुटफ़ाइल में प्रति अद्वितीय लाइन एक फ़ाइल बनाएगी । लेकिन सावधान रहें कि जब समवर्ती खुली फ़ाइलों की सीमा पूरी हो जाती है, तो कुछ awkकार्यान्वयन विफल हो जाएंगे।

या

awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile

क्रमांकित आउटपुट फ़ाइलों के लिए।


आप इसे लिखे जाने के बाद आउटपुट फ़ाइल को बंद () कर सकते हैं, अन्यथा आप अधिकांश आवक कार्यान्वयनों के साथ अधिकतम संख्या में खुली फ़ाइलों की सीमा में भाग लेंगे।
स्टीफन चेज़लस

उस के बारे में पता नहीं है .. क्या आप मेरे लिए ऐसा कर सकते हैं? धन्यवाद ..
राहुल पाटिल

3
A=0
while IFS= read -r LINE ; do
  printf '%s\n' "$LINE" > newfile$A
  (( A++ ))
done < "$INPUTFILE"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.