एकाधिक फ़ाइलों को मर्ज करते समय फ़ाइल की सामग्री के हर अंत के बाद नई लाइन जोड़ें


1

मैंने अलग-अलग फ़ाइल की सामग्री को मर्ज करने के लिए शेल स्क्रिप्ट लिखी है जो मैंने निर्देशिका f1, f2, d1, d2 और उनके तहत फाइलें बनाई हैं, मुझे सभी फ़ाइलों की सामग्री को मर्ज करने की आवश्यकता है: कॉमैंड है

(find /home/ah5024331/f1 /home/ah5024331/f2  /home/ah5024331/d1  /home/ah5024331/d2 /home/ah5024331/f1 /home/ah5024331/f2  -type f | xargs -i cat {} ) > t.txt

आउटपुट है:

--this is new text from f1 ----
--this is text from f2 ------this is new text from d1 ------this is new text from d2 -----this is new text from f1 ----

मुझे फाइल के हर छोर के बाद नई लाइन जोड़ने की आवश्यकता है:

--this is new text from f1 ----
--this is text from f2
------this is new text from d1 
------this is new text from d2 
-----this is new text from f1 ----

उसको कैसे करे?

किसी भी मदद की अग्रिम में सराहना की जाएगी।

जवाबों:


0

इसे इस्तेमाल करे:

#!/bin/bash
for f in $(find /home/ah5024331/f1 /home/ah5024331/f2 \
    /home/ah5024331/d1 /home/ah5024331/d2 -type f)
do
    cat "$f" >> t.txt
    echo >> t.txt
done

यह प्रत्येक फ़ाइल के अंत के बाद एक नई-लाइन को जोड़ देगा, हालांकि, अगर इनमें से किसी भी फ़ाइल में पहले से ही एक नई-पंक्ति है, तो आपको आउटपुट में एक अतिरिक्त रिक्त लाइन दिखाई देगी (जैसा कि टिप्पणियों में @mnmnc द्वारा उल्लेख किया गया है) )।


echo "FOOBAR" >> t.txtसिर्फ और सिर्फ क्यों echo >> t.txt?
अर्कादियुस ड्राज्स्क 12

कुछ फ़ाइलों के साथ काम नहीं करेंगे जो पहले \nसे ही अंत में हैं। यह कुछ मामलों में एक दोहरी नई लाइन बनाएगा। इसे पूरी तरह से काम करने के लिए आपको आउटपुट में रखा गया आखिरी चार्ट याद रखना होगा और अगली फाइल में स्विच करने पर सत्यापित करना होगा कि मुझे क्या लगता है।
mnmnc

मैं जो देखती हूँ उससे उसने पूछा:I need to add new line after every end of file like (...)
अर्कादिअस ड्राज्स्क

@ArkadiuszDrabczyk ops, मैंने प्रश्न को गलत बताया। जैसा कि आपने सुझाव दिया है, मैं इसे सरल करूँगा। इसे यहां लाने के लिए धन्यवाद।
ज्वेरीच

मैंने इसकी कोशिश की कि हर फाइल के बाद नई लाइन न
उपयोगकर्ता

0

एक नई रेखा के साथ एक डमी फ़ाइल बनाएँ।

echo -n "" > /tmp/newline.txt

अब नीचे अपनी स्क्रिप्ट निष्पादित करें।

(find /home/ah5024331/f1 /home/ah5024331/f2  /home/ah5024331/d1  /home/ah5024331/d2 /home/ah5024331/f1 /home/ah5024331/f2  -type f | xargs -i cat {} /tmp/newline.txt ) > t.txt

यह नई लाइन नहीं जोड़ रहा है
उपयोगकर्ता

आप किस Unix OS पर यह स्क्रिप्ट चला रहे हैं। निकालें विकल्प और फिर से प्रयास करें। क्या आप उस आउटपुट को चिपका सकते हैं ताकि हमारे पास कुछ बेहतर तस्वीर हो।
सुरेशराजू

0

जीएनयू समानांतर का उपयोग करना इस तरह दिखता है:

(find ...  -type f | parallel -j1 cat {}';'echo ) > t.txt

जीएनयू समानांतर एक सामान्य समांतरक है और इससे एक ही मशीन पर या आपके द्वारा उपयोग की जाने वाली कई मशीनों पर समानांतर में नौकरी चलाना आसान हो जाता है। और यह forइस मामले में कई छोरों को भी बदल सकता है ।

यदि आपके पास 32 विभिन्न कार्य हैं जिन्हें आप 4 सीपीयू पर चलाना चाहते हैं, तो समानांतर करने के लिए एक सीधा आगे का तरीका प्रत्येक सीपीयू पर 8 नौकरियों को चलाना है:

सरल समय-निर्धारण

जीएनयू समानांतर इसके बजाय एक नई प्रक्रिया को जन्म देता है जब एक खत्म हो जाता है - सीपीयू को सक्रिय रखना और इस तरह समय की बचत करना:

GNU समानांतर शेड्यूलिंग

स्थापना

यदि जीएनयू समानांतर आपके वितरण के लिए पैक नहीं किया गया है, तो आप एक व्यक्तिगत स्थापना कर सकते हैं, जिसे रूट एक्सेस की आवश्यकता नहीं है। इसे 10 सेकंड में किया जा सकता है:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

अन्य संस्थापन विकल्पों के लिए देखें http://git.savannah.gnu.org/cgit/parallel.git/tree/README

और अधिक जानें

अधिक उदाहरण देखें: http://www.gnu.org/software/parallel/man.html

इंट्रो वीडियो देखें: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

ट्यूटोरियल के माध्यम से चलें: http://www.gnu.org/software/parallel/parallel_tutorial.html

समर्थन पाने के लिए ईमेल सूची के लिए साइन अप करें: https://lists.gnu.org/mailman/listinfo/parallel

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.