我想在这个例子中使用并行:
cat codigos.txt | parallel -j 10 "wget http://mywebsite.com/teste?id={}&x=&date=01/01/2017" --load-cookies=cookies.txt
我有三个文件:codigos.txt
一个包含 ids 的文件、dates.txt
一个包含日期的文件以及cookies.txt
一个包含执行请求所需的 cookie 的文件。
我想要做的是使用我的文件内容保存 mywebsite.com 对每个 url 的响应。
问题:
- 如何使用来自两个文件的信息?
- 网址在“&”处被剪切(即使我加了引号)。例子:
request made to http://mywebsite.com/teste?id=1
如本例所示(但由于“&”而没有放置空格或剪切):
cat abc-file | parallel -a - -a def-file echo
参考:https://www.gnu.org/software/parallel/parallel_tutorial.html
答案1
我假设你想运行:
wget http://mywebsite.com/teste?id=codigo1&x=&date=01/01/2017" --load-cookies=cookies.txt
wget http://mywebsite.com/teste?id=codigo1&x=&date=02/01/2017" --load-cookies=cookies.txt
wget http://mywebsite.com/teste?id=codigo1&x=&date=03/01/2017" --load-cookies=cookies.txt
wget http://mywebsite.com/teste?id=codigo2&x=&date=01/01/2017" --load-cookies=cookies.txt
wget http://mywebsite.com/teste?id=codigo2&x=&date=02/01/2017" --load-cookies=cookies.txt
wget http://mywebsite.com/teste?id=codigo2&x=&date=03/01/2017" --load-cookies=cookies.txt
如果文件codigos.txt
包含:
codigo1
codigo2
并dates.txt
包含:
01/01/2017
02/01/2017
03/01/2017
那么这将起作用:
mywget() {
wget "http://mywebsite.com/teste?id=$1&x=&date=$2" --load-cookies=cookies.txt;
}
export -f mywget
parallel mywget :::: codigos.txt dates.txt