(Alternatif olarak ) xargsseçeneği ile kullanıyorum .--max-args=0-P 0
Bununla birlikte, işlemlerin çıktısı, stdoutdoğru hat ayrımı dikkate alınmaksızın akışa birleştirilir . Bu yüzden sık sık aşağıdaki gibi satırlarla sonuçlanacağım:
<start-of-line-1><line-2><end-of-line-1>
Ben tüm çıkış desen egrepile birlikte kullandığım gibi bu benim sonuç berbat.^xargs
xargsSüreç çıktılarını sırayla yazmaya zorlamanın bir yolu var mı (bir sürecin çıktısı bitişik olduğu sürece herhangi bir düzen)?
Yoksa başka bir çözüm mü?
Düzenleme: kullanım durumu hakkında daha fazla bilgi:
Farklı ana bilgisayarlardan web sayfaları indirmek ve ayrıştırmak istiyorum. Her sayfanın yüklenmesi yaklaşık bir saniye sürdüğü ve birkaç düzine sayfa olduğu için istekleri paralelleştirmek istiyorum.
Komutum aşağıdaki forma sahip:
echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Ana bilgisayar IP'leri ($ IPs değişkeni) ve diğer bazı veriler dahil edilen bir bash dosyasından geldiğinden bash ve Perl gibi bir şey kullanmıyorum.
xargsböyle bir özellik sağlamıyor gibi görünüyor.
makeişlerin özelliğini kullanabilirsiniz , bence makeçıktı hatlarını düzgün bir şekilde birleştiriyor.
--line-bufferedbayrak ekliyoregrep
xargs.