xargs を使用する複数の引数。

xargs を使用する複数の引数。

私はxargsがこのような多くの引数を受け入れることができることを知っています。

xargs -n5 -I{} echo {}

しかし、私が望む特定の場所にパラメータをどのように配置できますか?

xargs -n5 -I{} curl www.google.com/{1}/testing/{2}/{3}/works/{5}

そのような目標をどのように達成できますか?

答え1

を使って直接これを行うことはできないと思いますxargs。 Costasが提案したとおりに使用するか、read次の手順を実行します。

xargs -n5 sh -c 'curl "http://www.google.com/${1}/testing/${2}/${3}/works/${5}"' curl-command

または、URLを作成して次に渡しますxargs

awk '{printf "http://www.google.com/%s/testing/%s/%s/works/%s\n", $1, $2, $3, $5}' | \
  xargs -L1 curl 

答え2

あなたはGNU Parallelの構文を発明したと思います:

... | parallel -N5 curl www.google.com/{1}/testing/{2}/{3}/works/{5}

curlCPUごとに1つずつ実行すると、追加の利点が得られます。

GNU Parallelは、同じコンピュータまたはSSHを介してアクセスできる複数のコンピュータでタスクを並列に簡単に実行できる汎用の並列ハンドラです。

4つのCPUで32の異なるジョブを実行する場合は、並列化する簡単な方法は、各CPUで8つのジョブを実行することです。

簡単なスケジューリング

代わりに、GNU Parallel はタスクが完了すると新しいプロセスを作成し、CPU をアクティブに保つことで時間を節約します。

GNU並列スケジューリング

インストールする

ディストリビューションにGNU Parallelがパッケージされていない場合は、rootアクセスなしでプライベートインストールを実行できます。これは10秒で完了できます。

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

その他のインストールオプションについては、以下を参照してください。http://git.savannah.gnu.org/cgit/parallel.git/tree/README

詳細

より多くの例を見る:http://www.gnu.org/software/parallel/man.html

紹介ビデオを見る:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

このチュートリアルを見てください。http://www.gnu.org/software/parallel/parallel_tutorial.html

サポートを受けるには、メールリストに参加してください。https://lists.gnu.org/mailman/listinfo/parallel

答え3

system()この目的で関数をawk使用できます。

$ awk '{system("curl -v www.google.com/"$1"/testing/"$2"/"$3"/works/"$4)}' file.txt

これにはfile.txtコマンドのパラメータが含まれますcurl

関連情報