쉘을 사용하여 두 파일을 병렬로 처리하는 방법

쉘을 사용하여 두 파일을 병렬로 처리하는 방법

이 예에서는 병렬성을 사용하고 싶습니다.

cat codigos.txt | parallel -j 10 "wget http://mywebsite.com/teste?id={}&x=&date=01/01/2017" --load-cookies=cookies.txt

세 개의 파일이 있습니다. codigos.txtID가 포함된 파일, dates.txt날짜가 포함된 파일, cookies.txt요청을 수행하는 데 필요한 쿠키가 포함된 파일입니다.

내가 원하는 것은 내 파일의 내용을 사용하여 각 URL에 대한 mywebsite.com의 응답을 저장하는 것입니다.

질문:

  1. 두 파일의 정보를 사용하는 방법은 무엇입니까?
  2. 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

관련 정보