Agrupe líneas en un archivo y alimente un grupo a un programa a la vez

Agrupe líneas en un archivo y alimente un grupo a un programa a la vez

Tengo un programa que toma URL como argumentos de línea de comando y genera un archivo pdf. Por ejemplo, utilizo la sustitución de comandos para proporcionar las URL de entrada de un archivo.urlsfile

wkhtmltopdf $(cat urlsfile) my.pdf

En urlsfile, cada línea es una URL.

Ahora me gustaría agrupar cada 15 líneas urlsfiley enviar un grupo de URL al programa a la vez. ¿Cómo puedo hacer eso en bash?

Tenga en cuenta que es aceptable crear un archivo pdf por cada 15 URL y luego fusionaré los archivos pdf en uno. Si el programa puede realizar la fusión, es mejor.

Gracias.

Respuesta1

Con xargs:

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

o si tu xargsno es compatible -a:

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

Respuesta2

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

y si te gusta el resultado, reemplaza printporsystem

información relacionada