Ich benutze xargsmit der Option --max-args=0(alternativ -P 0).
Die Ausgabe der Prozesse wird jedoch stdoutohne Rücksicht auf eine ordnungsgemäße Leitungstrennung in den Strom eingebunden . So werde ich oft mit Zeilen enden wie:
<start-of-line-1><line-2><end-of-line-1>
Da ich egrepmit ^in meinem Muster auf der gesamten xargsAusgabe verwende, ist dies mein Ergebnis durcheinander.
Gibt es eine Möglichkeit, xargsdas Schreiben der Prozessausgaben in der angegebenen Reihenfolge zu erzwingen (eine beliebige Reihenfolge, solange die Ausgabe eines Prozesses zusammenhängend ist)?
Oder eine andere Lösung?
Bearbeiten: Weitere Details zum Anwendungsfall:
Ich möchte Webseiten von verschiedenen Hosts herunterladen und analysieren. Da das Laden jeder Seite etwa eine Sekunde dauert und es ein paar Dutzend Seiten gibt, möchte ich die Anforderungen parallelisieren.
Mein Befehl hat die folgende Form:
echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Ich benutze bash und nicht so etwas wie Perl, da die Host-IPs (die $ IPs-Variable) und einige andere Daten aus einer enthaltenen bash-Datei stammen.
xargsscheint keine solche Funktion zu bieten.
makeJob-Funktion verwenden, ich denke, makedie Ausgabezeilen werden ordnungsgemäß zusammengeführt.
--line-bufferedFlagge hinzu, egrepum zu helfen
xargs.