Agrupe linhas em um arquivo e alimente um grupo a um programa por vez

0

Eu tenho um programa que leva urls como argumentos de linha de comando e gera um arquivo pdf. Por exemplo, eu uso a substituição de comando para fornecer os URLs de entrada de um arquivo urlsfile

wkhtmltopdf $(cat urlsfile) my.pdf

Em urlsfile , cada linha é uma URL.

Agora, gostaria de agrupar todas as 15 linhas em urlsfile e alimentar um grupo de URLs no programa por vez. Como posso fazer isso no bash?

Note que é aceitável criar um arquivo pdf por 15 URLs, e então eu vou mesclar os arquivos pdf em um. Se a mesclagem puder ser feita pelo programa, é melhor.

Obrigado.

    
por Tim 21.10.2016 / 19:04

2 respostas

4

com xargs :

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

ou se o seu xargs não for compatível com -a :

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

    
por 21.10.2016 / 19:31
2
gawk        '{ f=f " " $0} 
    NR%15==0 { print("wrhtml2pdf " f " " NR/15 ".pdf") ; f=""}' urls

e se você gostar da saída, substitua print por system

    
por 21.10.2016 / 20:00