मुझे एक फ़ाइल के दूसरे कॉलम से निकाले गए टेक्स्ट का उपयोग करके एक काफी बड़ी टेक्स्ट फाइल (> 300,000 लाइनें) लिखनी है, फिर प्रत्येक लाइन पर टेक्स्ट को प्रीपेडिंग और एपेंड करना है और अंत में इसे एक नई फाइल में लिखना है।
लूप करते समय मेरे पास निम्नलिखित है और यह ठीक काम कर रहा है। लेकिन यह धीमा है, प्रति मिनट कई मिनट लग रहे हैं। मुझे संदेह है कि एक बेहतर जाग नुस्खा / विधि है जो बहुत तेज होगी। क्या कोई तेज तरीका सुझा सकता है।
स्रोत उदाहरण
useless9 important1 more useless stuff
useless8 important2 more useless stuff
useless7 important3 more useless stuff
useless6 important4 more useless stuff
स्रोत फ़ाइल और आउटपुट अंतिम परिणाम फ़ाइल से पाठ निकालें।
while read line; do
mytext=`echo $line | awk -v RS='\r\n' '{print $2}'`
echo "$PrePattern $mytext $PostPattern" >> $OUTFILE
done < $SOURCEFILE
outfile
PrePattern text important1 PostPattern text
PrePattern text important2 PostPattern text
PrePattern text important3 PostPattern text
...
बहुत बहुत धन्यवाद, ग्लेन जैकमैन! जैसा कि मुझे संदेह था कि एक प्रदर्शन लाभ होना था। आपके समाधान ने ~ 15 सेकंड की प्रक्रिया को ~ 3 सेकंड में बदल दिया
—
धीमी प्रहार
उस लाभ में से बहुत से 300,000 awk प्रक्रियाओं को शुरू करने की जरूरत नहीं है, जब सिर्फ 1 करेंगे
—
ग्लेन जैकमैन
awk -v pre="$PrePattern" -v post="$PostPattern" '{print pre, $2, post}' "$SOURCEFILE"