![将文件中的行分组并一次将一组输入到程序中](https://linux22.com/image/96984/%E5%B0%86%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E8%A1%8C%E5%88%86%E7%BB%84%E5%B9%B6%E4%B8%80%E6%AC%A1%E5%B0%86%E4%B8%80%E7%BB%84%E8%BE%93%E5%85%A5%E5%88%B0%E7%A8%8B%E5%BA%8F%E4%B8%AD.png)
我有一个程序,它将 url 作为命令行参数并输出一个 pdf 文件。例如,我使用命令替换来提供文件中的输入 urlurlsfile
wkhtmltopdf $(cat urlsfile) my.pdf
在 中urlsfile
,每一行都是一个 url。
现在我想将 中的每 15 行进行分组urlsfile
,并一次向程序提供一组 url。我怎样才能在 bash 中做到这一点?
请注意,每 15 个网址创建一个 pdf 文件是可以接受的,然后我会将这些 pdf 文件合并为一个。如果合并可以由程序完成,那就更好了。
谢谢。
答案1
和xargs
:
xargs -a urlsfile -n 15 bash -c 'wkhtmltopdf "$@" my_$$.pdf'
或者如果你xargs
不支持-a
:
cat urlsfile | xargs -n 15 bash -c 'wkhtmltopdf "$@" my_$$.pdf'
答案2
gawk '{ f=f " " $0}
NR%15==0 { print("wrhtml2pdf " f " " NR/15 ".pdf") ; f=""}' urls
如果您喜欢输出,请替换print
为system