ฉันกำลังใช้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'
ฉันใช้ bash และไม่ใช่อย่าง Perl เพราะ host IP (ตัวแปร $ IP) และข้อมูลอื่น ๆ มาจากไฟล์ bash ที่รวมอยู่
xargs
ดูเหมือนจะไม่ได้ให้คุณสมบัติดังกล่าว
make
คุณลักษณะงานของฉันคิดว่าการmake
รวมสายออกอย่างถูกต้อง
--line-buffered
ตั้งค่าสถานะเพื่อegrep
ช่วย
xargs
มันไม่ชัดเจนว่าทำไมคุณกำลังใช้