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