Gruppieren Sie Zeilen in einer Datei und geben Sie jeweils eine Gruppe an ein Programm weiter

Gruppieren Sie Zeilen in einer Datei und geben Sie jeweils eine Gruppe an ein Programm weiter

Ich habe ein Programm, das URLs als Befehlszeilenargumente verwendet und eine PDF-Datei ausgibt. Beispielsweise verwende ich Befehlssubstitution, um die Eingabe-URLs aus einer Datei bereitzustellenurlsfile

wkhtmltopdf $(cat urlsfile) my.pdf

In urlsfileist jede Zeile eine URL.

Jetzt möchte ich alle 15 Zeilen in gruppieren urlsfileund dem Programm jeweils eine Gruppe von URLs zuführen. Wie kann ich das in Bash machen?

Beachten Sie, dass es akzeptabel ist, pro 15 URLs eine PDF-Datei zu erstellen. Anschließend werde ich die PDF-Dateien zu einer zusammenführen. Wenn das Zusammenführen vom Programm durchgeführt werden kann, ist das besser.

Danke.

Antwort1

Mit xargs:

xargs -a urlsfile -n 15 bash -c 'wkhtmltopdf "$@" my_$$.pdf'

oder wenn Ihr das xargsnicht unterstützt -a:

cat urlsfile | xargs -n 15 bash -c 'wkhtmltopdf "$@" my_$$.pdf'

Antwort2

gawk        '{ f=f " " $0} 
    NR%15==0 { print("wrhtml2pdf " f " " NR/15 ".pdf") ; f=""}' urls

und wenn Ihnen das Ergebnis gefällt, ersetzen Sie printdurchsystem

verwandte Informationen