tr을 사용하여 텍스트를 반복되는 문자로 바꿉니다.

tr을 사용하여 텍스트를 반복되는 문자로 바꿉니다.

파일에서 변수 이름 바꾸기를 사용해 보았지만 tr변수에 중복된 문자가 있는지 알 수 없는 일부 동작이 발견되었습니다.

예를 들어:

echo "aab" | tr 'aab' 'xyz'

xyz를 기대하면 "yyz"라는 결과가 나옵니다.

여기서 무슨 일이 일어나고 있는지 설명할 수 있는 사람이 있나요?

원하는 결과를 얻기 위해 다른 명령을 사용할 수 있다는 것을 알고 있지만 이 상황이 무엇인지 sed이해하고 싶습니다 . tr매뉴얼 페이지를 살펴봤지만 왜 이런 일이 발생하는지에 대한 다른 설명을 찾지 못했습니다. 감사해요

답변1

tr문자열이 아닌 단일 문자를 처리합니다. 해당 매개변수는 일대일 매핑을 형성하는 문자 집합입니다.

tr aab xyz

' a로 바꾸다 x, a~로 바꾸다 y, b~로 바꾸다 z'라는 뜻입니다. 다음 두 그룹에서 한 수준 위를 살펴보는 것이 도움이 될 수 있습니다.

tr aab \
   xyz

두 번째 그룹이 첫 번째 그룹보다 짧은 경우 마지막 문자를 반복하여 확장됩니다(기본적으로). 이러한 컬렉션은 순차적으로 적용되지 않고 순차적으로 읽혀지므로 a위의 " →" 대체는 이전에 정의된 y" a→" 대체를 제거합니다.x

관련 정보