パイプ長の値を読みますか?

パイプ長の値を読みますか?

入力されたパイプの長さを確認するには?私の考えでは:

echo "A" | xargs sh -c 'echo ${#$1}'

返品:

echo "A" | xargs sh -c 'echo ${#\"$1\"}'

に基づいて答えはここにあります、非パイプラインの例の場合。

答え1

〜のように@スティーブが書いたwc -c、バイト数を計算するために使用されます。他のオプションを参照してくださいman wc

echo出力の末尾に改行文字を追加します。、計算するときに予想よりも文字が1つ多く表示される理由です。printf出力をより厳密に制御します。

答え2

必要なのは、引数の長さが2より小さい場合にコマンドを実行することであると仮定します。

seq 100 | parallel echo '{= length($_) >= 2 and skip =}'

また、タスクをコアごとに1つずつ並列に実行します。

注:GNU Parallelはmoreutilsでは並列ではありません。

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

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

簡単なスケジューリング

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

GNU並列スケジューリング

インストールする

セキュリティ上の理由から、パッケージマネージャを使用してGNU Parallelをインストールする必要がありますが、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

関連情報