パイプされた値の長さを読み取りますか?

パイプされた値の長さを読み取りますか?

パイプ入力の長さを確認するにはどうすればいいでしょうか? 試しているのは次のことです:

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 並列スケジューリング

インストール

セキュリティ上の理由から、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

関連情報