
パイプ入力の長さを確認するにはどうすればいいでしょうか? 試しているのは次のことです:
echo "A" | xargs sh -c 'echo ${#$1}'
また:
echo "A" | xargs sh -c 'echo ${#\"$1\"}'
に基づく答えはここにパイプ以外の例については、 を参照してください。
答え1
として@steve さんが書きましたは、wc -c
バイト数をカウントするために使用されます。man wc
他のオプションについては、 を参照してください。
echo
出力の最後に改行を追加しますなので、カウントすると予想よりも 1 文字多くなります。printf
出力をより厳密に制御するには、 を使用します。
答え2
引数の長さが 2 未満の場合にコマンドを実行したいとします。
seq 100 | parallel echo '{= length($_) >= 2 and skip =}'
また、ジョブは各コアで 1 つずつ並列に実行されます。
注意: GNU Parallel は moreutils の parallel ではありません。
GNU Parallel は汎用的な並列化ツールであり、同じマシン上または SSH アクセスできる複数のマシン上でジョブを並列に実行することを容易にします。
4 つの CPU で実行したい 32 個の異なるジョブがある場合、並列化するための最も簡単な方法は、各 CPU で 8 つのジョブを実行することです。
GNU Parallel は、代わりに、1 つのプロセスが終了すると新しいプロセスを生成します。これにより、CPU がアクティブな状態になり、時間が節約されます。
インストール
セキュリティ上の理由から、GNU Parallel はパッケージ マネージャーを使用してインストールする必要がありますが、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