我有一台使用tr时表现出奇怪行为的特定服务器。这是工作服务器上的示例:
-bash-3.2$ echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-z]
1234567890
-bash-3.2$
这对我来说很有意义。
但是,这来自“特殊”服务器:
[root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-z]
abcdefghijklmnpqrstuvwxyz1234567890
如您所见,删除所有小写字符失败。但是,它已删除字母“ o”
有趣的部分是以下两个示例,这些示例对我来说毫无意义:
[root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-n]
opqrstuvwxyz1234567890
[root@host~]# echo "abcdefghijklmnopqrstuvwxyz1234567890"|tr -d [a-o]
abcdefghijklmnpqrstuvwxyz1234567890
[root@host~]#
(同样,在上一个示例中删除了“ o”)
有人知道这里发生了什么吗?我无法在正在使用的任何其他Linux盒上进行复制。
tr
范围写入时不包含[...]
。所以tr -d '[a-z]'
会杀人a-z
,还有人物[
和]
。用于tr -d a-z
仅杀死字母a-z
。