xargs を使用した複数の引数。

xargs を使用した複数の引数。

xargs はこのように多くの引数を取ることができることは知っています。

xargs -n5 -I{} echo {}

しかし、次のようにしたい特定の場所に引数を配置するにはどうすればよいでしょうか。

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

どうすればそのようなことが達成できるのでしょうか?

答え1

これを直接 で実行することはできないと思いますxargs。Costasreadの提案どおりに使用するか、次のようにします。

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 は、代わりに、1 つのプロセスが終了すると新しいプロセスを生成します。これにより、CPU がアクティブな状態になり、時間が節約されます。

GNU 並列スケジューリング

インストール

GNU Parallel がディストリビューションにパッケージ化されていない場合は、ルート アクセスを必要としない個人用インストールを行うことができます。次の操作を実行すると、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

関連情報