"-dc" 如何在 "cat /dev/urandom | tr -dc "01" 中工作?

Abd*_*red 3 command-line tr

到目前为止我知道,该/dev/urandom文件是特殊文件之一,其目的是生成随机字符。当我执行cat /dev/urandom一串奇怪的字符时,一些甚至中文表意文字会连续显示。但是,如果我tr使用该选项-dc将这个奇怪的字符流通过管道传输到tr -dc "setofcharacters".

我试图阅读 tr 的手册,但在下面-d-c我得到了我不理解或无法理解的解释,例如

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

   -d, --delete
          delete characters in SET1, do not translate
Run Code Online (Sandbox Code Playgroud)

有人可以这么友好并逐步解释背后的逻辑吗 cat /dev/urandom | tr -dc "01"

Ark*_*zyk 9

我认为最大的问题是理解-c选项描述中的“互补”是什么意思。它指的是集合论中的补集,请在维基百科上阅读:

在集合论中,集合 A 的补集指的是不在 A 中(即在 A 之外的事物)。

set 的补码01表示除 0 和 1 之外的所有字符。因此,该-d选项将删除所有既不是 0 也不是 1 的字符。