"cat /dev/urandom | tr -dc "01"から "-dc"はどのように機能しますか?

"cat /dev/urandom | tr -dc "01"から "-dc"はどのように機能しますか?

私が知る限り、この/dev/urandomファイルは特別なファイルの1つであり、その目的はランダムな文字を生成することです。cat /dev/urandom奇妙な文字が連続して実行されると、漢字が連続して表示されることもあります。ただし、trこのオプションを使用してこの奇妙な文字ストリームをパイプで連結すると、-dc0と1の任意のストリームまたはtr -dc "setofcharacters"

trに関するマニュアルを読んでみましたが、以下と下に-d私が-c理解していないか理解できない説明があります。

   -c, -C, --complement
          use the complement of SET1

   -d, --delete
          delete characters in SET1, do not translate

誰かがこの段階的なロジックを親切に説明できますか?cat /dev/urandom | tr -dc "01"

答え1

最大の問題は、オプションの説明で「サプリメント」が何を意味するのかを理解することだと思います-c。集合論の報酬を意味します。読んでください。ウィキペディアで:

集合理論では、集合Aの余集合はAに属さないもの(つまり、Aの外にあるもの)を指します。

セットの補数は、010と1を除くすべての文字を表します。したがって、この-dオプションはゼロでも1でもないすべての文字を削除します。

答え2

-dはSET1のすべての文字を削除することを意味し、-cはSET1の「補足」を使用することを意味します。結合すると、SET1にないすべての文字を削除するという意味です。

0と1を含む文字のリストを取得し、tr -dc "01"はリスト "01"にないすべての文字を削除し、0と1のみを表示します。

答え3

補完オプションは、単に提供されたセットの逆数を提供します。したがって、01を指定すると、0または1つのASCII文字を除くすべての項目に影響します。削除オプションは、選択したセットを削除します。したがって、入力から0または1つのASCII文字以外のすべての項目を削除するだけです。

これは/dev/urandom出力のASC​​II文字だけですが、/dev/urandom出力のすべての文字の実際のバイナリ値を表すわけではないことを理解してください。

答え4

読んだらTRマニュアル注意深く見ると、このコマンドを簡単に解釈できます。

一般形式:

tr [option]... set1 [set2]

あなたのコマンドで:

tr -dc "01"

set10とを含みます1-cオプションを使用すると、対応する補足文字が置き換えtrられます。これはおよびを除くすべての文字を意味します。set101

したがって、コマンドは次のように解釈できます。0と1以外のすべての文字を削除します。

関連情報