मैं xargsविकल्प के साथ उपयोग कर रहा हूं --max-args=0(वैकल्पिक रूप से -P 0)।
हालाँकि, stdoutउचित लाइन सेपरेशन के लिए प्रक्रियाओं का आउटपुट बिना स्ट्रीम में विलय हो जाता है । तो मैं अक्सर लाइनों के साथ समाप्त होता हूँ जैसे:
<start-of-line-1><line-2><end-of-line-1>
जैसा कि मैं पूरे पैटर्न पर अपने पैटर्न के egrepसाथ उपयोग कर रहा हूं यह मेरा परिणाम गड़बड़ कर रहा है।^xargs
क्या किसी तरह से xargsप्रक्रिया आउटपुट को लिखने के लिए बाध्य करने का कोई तरीका है (कोई भी आदेश, जब तक कि एक प्रक्रिया का आउटपुट सन्निहित है)?
या कोई और उपाय?
संपादित करें: उपयोग के मामले के बारे में अधिक जानकारी:
मैं अलग-अलग होस्ट से वेब पेज डाउनलोड और पार्स करना चाहता हूं। जैसा कि प्रत्येक पृष्ठ को लोड करने में एक सेकंड लगता है और कुछ दर्जन पृष्ठ हैं जो मैं अनुरोधों को समानांतर करना चाहता हूं।
मेरे आदेश का निम्नलिखित रूप है:
echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
मैं बैश का उपयोग करता हूं और पर्ल की तरह कुछ नहीं क्योंकि होस्ट आईपी ($ आईपी वेरिएबल) और कुछ अन्य डेटा में शामिल डीएश फाइल से आता है।
xargsइस तरह की सुविधा प्रदान करने के लिए प्रतीत नहीं होता है।
makeनौकरी की सुविधा का उपयोग कर सकते हैं , मुझे लगता है कि makeआउटपुट लाइनों को ठीक से विलय करता है।
--line-bufferedकरने के लिए ध्वज जोड़ रहा हैegrep
xargs।