tr(1) 유틸리티에서 "-C"와 "-c"의 차이점을 이해합니다.

tr(1) 유틸리티에서 "-C"와 "-c"의 차이점을 이해합니다.

tr(1) 매뉴얼에 따르면 -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.

이제 -c위 명령을 사용하면 예상대로 작동합니다.

$ echo $(dd if=/dev/urandom count=1 2>/dev/null | tr -dc 'A-Za-z0-9')
BAP0EctPYxpGgJmWYclqHj2eBWfZvVJs7nL6Y6YQiguGoZgziCceLe3TcyeV4uUi1R1yPW98s8LgiC8iNS1F60tEE2nXAHNi6L6IVS3CXBn94oPLGppxAgp
$ 

.. -C하지만:

$ echo $(dd if=/dev/urandom count=1 2>/dev/null | tr -dC 'A-Za-z0-9')
���hA����W���t�W��eu�C���W��o��A��xz�����M��p���x��2q����10O���������������p�R���t��I���c�8Z��Rq�9�L�Z��u����ot�n�T��n�nI��3i�yj�CuK��v�Ny�0�������i1�W�Lo�do�����TckL����i�rn��Wc��T���3����X��Z�M�e���I��J��I���A�5Y�����h���K���������ai������S����aZ�G���oab8��������4�g���G��g��0����I���H2�XGo���1�7���Ls�9H��7�b���Sf���E��Tv����mE�����3���l���S�88z��nl�p�f����w�E���Y�q�p���B�
$ 

set of characters이것을 어떻게 이해합니까 set of values?

답변1

POSIX 로케일에서 문자는 0에서 127까지의 값을 가질 수 있습니다.

tr -dc 'A-Za-z0-9'

0에서 255까지의 값을 보완합니다.

tr -dC 'A-Za-z0-9'

유효한 문자 집합의 보완을 사용합니다(따라서 값은 0~128입니다).

첫 번째는 다음과 같습니다.

tr -d '\0-\57\72-\100\133-\140\173-\377'

그리고 두 번째는 다음과 같습니다.

tr -d '\0-\57\72-\100\133-\140\173-\177'

관련 정보