| HOME / 정보공유 / AIX 명령어 모음

tr
tr tr 명령 목적 문자를 변환합니다. 구문
tr [ -c | -cds | -cs | -ds | -s ] [ -A ] String1 String2
tr { -cd | -cs | -d | -s } [ -A ] String1
설명
tr 명령은 표준 입력의 문자를 삭제하거나 대체하여, 표준 출력에 그 결과를 기록합니다. tr 명령은 String1 및 String2 변수가 지정한 문자열을 지정된 플래그에 따라 세 가지 조작을 수행합니다.
문자 변환
String1과 String2가 모두 지정되고 -d 플래그가 지정되지 않는 경우, tr 명령은 표준 입력의 String1에 포함된 각각의 문자를 String2와 동일한 위치에 있는 문자로 대체합니다.
-d 플래그를 사용하여 문자 삭제
-d 플래그가 지정되는 경우, tr 명령은 표준 입력의 String1에 포함된 각각의 문자를 삭제합니다.
-s 플래그를 사용하여 시퀀스 제거
-s 플래그가 지정되는 경우, tr 명령은 String1 또는 String2로 표현된 문자열의 첫번째 문자를 제외한 모든 문자를 제거합니다. String1으로 표현된 각 문자의 경우, tr 명령은 표준 출력에서 최초 발생하는 문자를 제외한 모든 문자를 제거합니다. String2로 표현된 각 문자의 경우, tr 명령은 표준 출력에서 최초 발생하는 문자를 제외한 모든 문자를 제거합니다.
표현 문자열에 대한 특별 시퀀스
String1 및 String2 변수에 포함되는 문자열은 다음 규약을 사용하여 표현될 수 있습니다.
C1-C2 C1가 지정한 문자와 C2가 지정한 문자를 합친 문자열을 지정합니다. C1이 지정하는 문자는 C2로 지정한 문자 이전의 문자이어야 합니다.
주: 현재 로케일은 이 방법을 사용하는 종속 범위를 지정하는 경우 결과에 중요한 영향을 미칩니다. 명령에서 로케일에 무관한 결과를 일관되게 제공해야 하는 경우, 종속 영역을 사용하지 않는 것이 좋습니다.
[C*Number] Number는 C에 의해 지정되는 문자가 반복되는 횟수를 정수로 지정합니다. 첫번째 숫자가 0이 아니고 8진 정수로 간주되는 경우가 아니면, Number는 10진 정수로 간주됩니다.
[C*] C이 지정한 문자로 문자열을 채웁니다. String2 내에 포함된 문자열의 끝에서만 사용되는 이 옵션은 String2 내의 문자열이 String1 변수가 지정한 문자열과 동일한 수의 문자를 강제로 갖도록 합니다. *(별표) 뒤에 지정되는 모든 문자는 무시됩니다.
[ :ClassName: ] 현재 로케일의 ClassName이 명명한 문자 클래스에서의 모든 문자를 지정합니다. 클래스 이름은 다음 이름 중 하나일 수 있습니다.
alnum lower
alpha print
blank punct
cntrl space
digit upper
graph xdigit
문자 클래스에 대한 자세한 정보는 ctype 서브루틴을 참조하십시오.
[ =C= ] C가 지정한 문자와 같은 등가 클래스를 가지는 모든 문자를 지정합니다.
\Octal 인코딩이 Octal이 지정하는 8진의 값에 의해 대표되는 문자를 지정합니다. Octal은 1 자리, 2 자리, 또는 3 자리의 8진 정수일 수 있습니다. NULL 문자는 '\0'으로 표현될 수 있으며, 다른 모든 문자와 마찬가지로 처리됩니다.
\ControlCharacter ControlCharacter가 지정한 값에 대응되는 제어 문자를 지정합니다. 다음 값을 표현할 수 있습니다.
\a
경고
\b
백스페이스
\f
양식 넘김(form-feed)
\n
개행
\r
캐리지 리턴
\t
탭
\v
수직 탭
\\ 이스케이프 문자가 아니라, 역슬래시 문자 자체를 지정합니다.
\[ 특정 문자열이 시작된다는 특정 의미가 아니라, 왼쪽 괄호 문자를 지정합니다.
\- 범위 분리자라는 특정 의미가 아니라, 빼기 부호 문자를 지정합니다.
한 문자가 String1으로 한 번 이상 지정된 경우, 문자는 String1에서 최종적으로 나타나는 문자에 대응하는 String2의 문자로 변환됩니다.
String1과 String2에 지정된 문자열의 길이가 같지 않은 경우, tr 명령은 긴 문자열의 나머지 문자는 무시합니다.
플래그
-A 현재 로케일의 배열 순서 대신, 범위와 문자 클래스의 ASCII 배열 순서를 사용하여 바이트별로 모든 조작을 수행합니다.
-c String1의 값이 String1이 지정한 문자열의 complement로 대체됨을 지정합니다. 보완은 현재 로케일의 문자 세트에 있는 모든 문자이며, 이 때 String1 매개변수가 지정하는 문자는 제외됩니다. -A와 -c 플래그가 함께 지정되면, 문자는 모든 8 비트 문자 코드 세트에 대해 보완됩니다. -c 및 -s 플래그가 모두 지정되는 경우, -s 플래그가 String1의 보완 문자에 적용됩니다.
-d String1이 지정한 문자열에 포함된 표준 출력으로부터 각 문자를 삭제합니다.
-s 반복되는 문자열의 첫번째 문자를 제외한 모든 문자를 제거합니다. String1이 지정한 문자열은 변환하기 전에 표준 입력에서 제거되며, String2가 지정한 문자열은 표준 출력에서 제거됩니다.
String1 문자열을 지정합니다.
String2 문자열을 지정합니다.
종료 상태
이 명령은 다음과 같은 종료 값을 리턴합니다.
0 모든 입력이 성공적으로 처리되었습니다.
>0 오류가 발생하였습니다.
예제
중괄호를 소괄호로 변환하려면 다음과 같이 입력하십시오.
tr '{}' '()' < textfile > newfile
이는 {(왼쪽 중괄호)를 ((왼쪽 소괄호)로, 그리고 }(오른쪽 중괄호)를 )(오른쪽 소괄호)로 변환합니다. 다른 문자는 변경되지 않은 채로 남습니다.
중괄호를 대괄호로 변환하려면 다음과 같이 입력하십시오.
tr '{}' '\[]' < textfile > newfile
이는 {(왼쪽 중괄호)를 [(왼쪽 대괄호)로, 그리고 }(오른쪽 중괄호)를 ](오른쪽 대괄호)로 변환합니다. 왼쪽 대괄호는 \(역슬래시) 이스케이프 문자와 함께 입력되어야 합니다.
소문자에서 대문자로 변환하려면 다음과 같이 입력하십시오.
tr 'a-z' 'A-Z' < textfile > newfile
파일에서 단어 리스트를 작성하려면 다음과 같이 입력하십시오.
tr -cs '[:lower:][:upper:]' '[\n*]' < textfile > newfile
이는 소문자와 대문자가 아닌 각각의 문자열을 하나의 개행 문자로 변환합니다. *(별표)는 tr 명령이 첫번째 문자열 길이만큼 두 번째 문자열을 만들 수 있도록 개행을 반복하게 합니다.
파일에서 모든 NULL 문자를 삭제하려면, 다음과 같이 입력하십시오.
tr -d '\0' < textfile > newfile
하나 이상 문자를 하나의 개행 문자로 교체하려면 다음과 같이 입력하십시오.
tr -s '\n' < textfile > newfile
또는
tr -s '\012' < textfile > newfile
모든 인쇄할 수 없는 문자와 기타 유효한 제어 문자를 ?(물음표)로 바꾸려면, 다음과 같이 입력하십시오.
tr -c '[:print:][:cntrl:]' '[?*]' < textfile > newfile
이는 현재 로케일에서 인쇄할 수 없는 문자를 찾기 위해 다른 로케일에 작성된 파일을 검색합니다.
문자의 모든 문자 조합을 #(우물 표시)으로 대체하려면 다음을 입력하십시오.
tr -s '[:space:]' '[#*]'
관련 정보
ed 명령, trbsd 명령.
ctype 서브루틴.