今天,我学习了一些关于tr命令的知识。
但是,我仍然无法理解-c和-C之间的区别。
在手册上,它说:
-C Complement the set of characters in string1, that is ``-C ab'' includes every character except for `a' and `b'.
-c Same as -C but complement the set of values in string1.我不太明白set of values in string1 of -c选项意味着什么。
我认为它可以将字符串1 "ab"作为一个整体,并将避开单个a和b。
所以我做了一个实验:
⇒ echo "ab_a_b" | tr -C 'ba' 'c'
abcacbc%
⇒ echo "ab_a_b" | tr -c 'ba' 'c'
abcacbc%事情不符合我的期望!
那么,-C和-c在tr命令中有什么区别呢?
软件版本: OSX10.10上的BSD 2004
发布于 2015-11-09 02:59:35
“POSIX手册”指出:
,并包含以下注释
ISOPOSIX-2:1993标准有一个与-c选项类似的-C选项,但没有提供与POSIX1.2008中指定的-c选项相同的功能。这意味着,能够指定tr -cd\000-\177 (它将删除设置了顶部位的所有字节)的历史实践不会产生任何效果,因为在C语言环境中,具有八进制200到八进制377的字节不是字符。
由此可以看出,-c选项允许您指定表示ASCII字符的数值,而不是使用字符本身。
发布于 2015-11-09 03:11:05
这个问题实际上是关于BSD tr,而不是gnu tr。
BSD tr man:
-C Complement the set of characters in string1, that is ``-C ab''
includes every character except for `a' and `b'.
-c Same as -C but complement the set of values in string1.
FreeBSD 8.2 October 13, 2006GNU tr man:
-c, -C, --complement
use the complement of SET1OSX内置的工具,我相信是BSD版本。
修正错误,sed/tr
https://unix.stackexchange.com/questions/241746
复制相似问题