即使我阅读了手册,我也无法理解 Ubuntu GNU/Linux 中 tr 命令中 -c 参数的作用

即使我阅读了手册,我也无法理解 Ubuntu GNU/Linux 中 tr 命令中 -c 参数的作用

我尝试根据它所说的命令来理解命令-c中的选项的作用:trman tr

-c, -C, --complement 使用 SET1 的补码

但我无法理解医生的意思“补充”所以我做了下面的例子来理解它:

我创建了以下文件,名为trance.txt

ILOVE YOU
I HATE YOU
i WANNA EAT APPLE PIE

我跑:tr -C A-Za-z "\n" < trance.txt

这给出了输出:

ILOVE
YOU
I
HATE
YOU
i
WANNA
EAT
APPLE
PIE

但我仍然不明白-c选项的实际作用。你能给我解释一下吗?

答案1

它用它的补集替换集合A-Za-zIE当前字符集中的所有字符,减去指定的字符。引用POSIX, 在缺少...之下-d

  • 如果-C指定了选项,则指定的字符的补集字符串1(当前字符集中所有字符的集合,由当前设置定义LC_CTYPE,除了那些实际指定的字符串1操作数)应按升序排列顺序放置在数组中,如当前设置所定义LC_COLLATE

  • 如果-C指定了选项,由指定的值的补集字符串1应按二进制值升序放置在数组中。

所以你的命令正在替换所有字符不是AZ 或 az 带换行符。

因为tr使用一对一的字符映射表进行替换,事情并不那么简单;-c-C不仅仅是“不在”选项,它们按照选项指定的顺序构建不在给定集合中的所有字符的集合。仅当目标集具有多个字符时,这一点才有意义。

相关内容