tr '[az]' '[n-za-m]'은 어떻게 작동하나요?

tr '[az]' '[n-za-m]'은 어떻게 작동하나요?

다음을 사용하여 해독할 수 있는 모호한 이메일 주소를 찾았습니다.

echo "[email protected]" | tr '[a-z]' '[n-za-m]'

유효한 이메일 주소를 출력하는 방법은 무엇입니까? 이 명령은 무엇을 하고 있나요?

답변1

tr.의 매뉴얼 페이지에서는 문자를 한 세트에서 다른 세트로 변환하는 필터에 대해 잘 설명합니다. 지정된 첫 번째 그룹은 이며 [a-z], 이는 를 입력하는 간단한 방법입니다 [abcdefghijklmnopqrstuvwxyz]. 두 번째는 [n-za-m], 가 되는 것입니다 [nopqrstuvwxyzabcdefghijklm]. tr표준 입력에서 각 문자를 읽고 첫 번째 그룹에 나타나면 두 번째 그룹의 동일한 위치에 있는 문자로 대체합니다(이는 [및가 ]자체적으로 대체되므로 포함할 의미가 없지만 많은 경우 사람들은 정규식이 문자 클래스를 나타내기 위해 문자 클래스를 사용하여 tr문자 클래스가 필요하다고 생각하기 때문에 실수로 이 작업을 수행합니다.

더 간단한 예:

$ echo abc | tr ab xy
xyc

ax, b, y, c첫 번째 그룹에 속하지 않기 때문에 동일하게 유지됩니다 . 이 경우 사용자가 수행하는 모든 작업은 동일한 필터를 통해 전자 메일 주소를 실행하는 것입니다(대칭적이므로 에 a매핑되고 n다시 n매핑됨 a). 다시 실행하면 모든 문자가 다시 자신의 문자로 교체됩니다. 원래 상태


참고 사항: 각 문자가 알파벳에서 13자 더 떨어진 문자로 대체되는 이 특수 스왑을로트 13(스핀 13) 사람들이 보고 싶어하지 않는 콘텐츠를 숨기는 방법으로 뉴스 그룹에서 인기가 있습니다.

답변2

tr음역 문자: 입력의 일부 문자 x에 대해 문자 y를 출력합니다.

tr두 개의 명령줄 매개변수인 "from" 문자와 "to" 문자를 사용합니다.

위의 예에서는 "from 문자"가 로 지정됩니다 '[a-z]'. "문자로"는 로 지정됩니다 '[n-za-m]'. 작은따옴표는 명령줄을 해석하는 쉘이 두 인수로 어떤 작업도 수행하지 못하도록 방지합니다. tr대괄호 안의 인수를 범위로 처리합니다. 따라서 '[a-z]' means "all lower case characters from 'a' to 'z', inclusive". The second argument is a bit more complicated,'[n-za-m]'`은 "'n'에서 'z'(포함)까지, 그리고 'a'에서 'm'(포함)까지의 소문자"를 의미합니다.

tr입력된 "a" 문자를 모두 "n"으로, "b"를 "m"으로, "c"를 "o"로 음역하여 최대 "n"자를 "z"로 출력합니다. 입력의 "o" 문자는 "a", "p"에서 "b", "q"에서 "c" 등으로 출력됩니다. 입력의 "z" 문자는 "l"로 출력됩니다.

기본적으로 명령은 다음을 수행합니다.카이사르 암호입력 시 한 번에 하나의 소문자를 입력합니다. 누군가 암호화해야 해"[이메일 보호됨]" echo출력한 문자열을 가져옵니다.

관련 정보