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 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / lsblk - 디스크·파티션 구조와 마운트 지점 확인

Linux / 명령어 / lsblk - 디스크·파티션 구조와 마운트 지점 확인

Linux lsblk 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / sudo - 다른 사용자 권한으로 명령 실행

Linux / 명령어 / sudo - 다른 사용자 권한으로 명령 실행

Linux sudo 명령어로 허용된 명령을 root 또는 다른 사용자 권한으로 실행하는 방법을 설명합니다. 주요 옵션, 인증 캐시, 리디렉션 문제, visudo와 최소 권한 sudoers 설정 원칙을 정리합니다.

Linux / 명령어 / groups - 사용자의 그룹 소속 확인

Linux / 명령어 / groups - 사용자의 그룹 소속 확인

Linux groups 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / dpkg - 로컬 DEB 패키지 설치와 설치 정보 조회

Linux / 명령어 / dpkg - 로컬 DEB 패키지 설치와 설치 정보 조회

Linux dpkg 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 리눅스 역사 - 1991년 취미 프로젝트가 세계 인프라가 되기까지

Linux / 리눅스 역사 - 1991년 취미 프로젝트가 세계 인프라가 되기까지

리눅스는 1991년 시작된 커널 프로젝트에서 서버·클라우드·모바일을 떠받치는 기반 기술로 성장했습니다. UNIX와 GNU의 배경부터 배포판과 공동 개발 생태계의 확장까지 핵심 연표로 정리합니다.

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux tail 명령어로 파일의 마지막 행과 바이트를 확인하고 새로 추가되는 로그를 추적하는 방법을 설명합니다. -n, -f, -F 차이와 로그 로테이션, 필터링 및 여러 파일 모니터링 예제를 정리합니다.

Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux rmdir 명령어로 빈 디렉터리와 비어 있는 상위 경로를 안전하게 삭제하는 방법을 설명합니다. rm -r과의 차이, 실패 원인과 스크립트 사용법도 알아봅니다.

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux / 명령어 / ssh-keygen - SSH 키 쌍 생성과 지문 확인

Linux ssh-keygen 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어

Linux / 명령어

리눅스에서 자주 사용하는 명령어를 파일, 텍스트, 권한, 프로세스, 시스템, 디스크, 네트워크와 패키지 관리 작업별로 정리했습니다. 링크가 있는 명령어는 자세한 사용법과 예제를 확인할 수 있습니다.

Linux / 명령어 / whoami - 현재 유효 사용자 이름 확인

Linux / 명령어 / whoami - 현재 유효 사용자 이름 확인

Linux whoami 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.