30M行を含む大きな入力ファイルがあります\r\n
。 1000行(残りのファイルの場合はそれ以下)チャンクをcurl
。
私は以下を試しました:
< input.xt tr -d '\r' | xargs -P 8 -r -d '\n' -n 1000 -I {} curl -s -X POST --data-binary '{}' http://...
\r
複数の文字に分割できないように見えるので、最初に入力から 'を削除しました。tr
xargs
ただし、上記のコマンドは、(パラメータのために)8つのプロセスが並列に接続されているにcurl
もかかわらず、まだプロセスに対して1行しか提供していないようです。curl
-P 8
curl
並列性を維持しながら1000行のチャンクを渡すようにこのコマンドを変更するにはどうすればよいですか?
私はラインがランダムな順序でRESTサービスに到着することを知っていますが、これは私のユースケースに適しています。
ベストアンサー1
GNU Parallelは以下のために作成されました:
< input.xt parallel -P 8 -d '\r\n' -n 1000 curl -s -X POST --data-binary '{}' http://...
\r\n を保存するには、--pipe
デフォルトで ~1MB チャンクを渡す 。
< input.xt parallel -P 8 --pipe curl -s -X POST --data-binary @- http://...