Linux / 명령어 / tr - 표준 입력의 문자 치환과 삭제
tr은 표준 입력으로 들어온 문자를 치환하거나 삭제하고, 반복된 문자를 압축합니다. 파일 이름을 인수로 직접 받지 않는다는 점을 먼저 기억하세요.
tr 명령어란?
tr은 문자 단위 필터입니다. 문자열 패턴을 찾아 문맥에 따라 치환하려면 sed가 적합합니다. 문자 범위의 해석은 로케일에 영향을 받을 수 있으므로 스크립트에서는 입력 문자 집합을 확인하세요.
기본 문법
tr [옵션] 집합1 [집합2] < 입력파일
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man tr으로 현재 시스템의 설명을 확인하세요.
사용 예제
소문자를 대문자로
입력을 파이프로 전달하고 결과를 화면에 출력합니다.
printf '%s\n' hello | tr '[:lower:]' '[:upper:]'
특정 문자 삭제
-d는 지정한 문자 집합에 속하는 문자를 지웁니다.
tr -d '\r' < windows-lines.txt
반복 공백 압축
연속된 공백 문자를 하나로 줄입니다. 탭과 공백을 한 종류로 통일하려면 별도 치환이 필요합니다.
tr -s ' ' < notes.txt
문자 단위 변환 결과
tr은 표준 입력의 문자를 하나씩 치환하거나 삭제합니다. 다음은 영문 대문자를 소문자로 바꾸는 예제입니다.
printf 'HELLO 123\n' | tr '[:upper:]' '[:lower:]'
예시 출력:
hello 123
숫자와 공백은 변환 대상이 아니므로 그대로 남습니다. tr에는 파일 경로 인수가 없으므로 파일을 처리할 때는 tr ... < 원본 > 결과처럼 리디렉션합니다. 다중 바이트 문자의 복잡한 치환이나 단어·정규식 치환에는 sed 또는 다른 텍스트 처리 도구가 더 적합합니다.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-d |
집합1에 해당하는 문자를 삭제합니다. |
-s |
반복된 해당 문자를 하나로 압축합니다. |
-c |
집합1에 없는 문자들을 선택합니다. |
[:lower:] / [:upper:] |
문자 클래스로 대소문자 집합을 표현합니다. |
사용할 때 주의할 점
입력 파일을 바꾸지 않습니다. tr ... < file > file은 셸이 파일을 먼저 비울 수 있으므로 별도 출력 파일을 사용하세요. tr의 집합은 정규 표현식 전체가 아니며, UTF-8 다중 바이트 처리에는 구현과 로케일 제한을 확인해야 합니다.
자주 묻는 질문
tr 파일.txt처럼 파일 이름을 넣을 수 있나요?
아니요. 파일 내용은 tr ... < 파일.txt처럼 표준 입력으로 제공해야 합니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 tr 관련 공식 문서에서 확인할 수 있습니다.









