मैं 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
।