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 강좌 / 파일 내용 읽기 - cat, less, more, head, tail

Linux 강좌 / 파일 내용 읽기 - cat, less, more, head, tail

cat, less, more, head, tail로 리눅스 파일 내용을 읽는 방법을 비교합니다. 짧은 파일과 긴 파일, 앞·뒤 일부를 확인할 때의 선택 기준과 실습 결과를 설명합니다.

Linux / 명령어 / zip - 여러 파일을 ZIP 아카이브로 묶기

Linux / 명령어 / zip - 여러 파일을 ZIP 아카이브로 묶기

Linux zip 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux mktemp 명령어로 예측하기 어려운 이름의 임시 파일과 디렉터리를 안전하게 만드는 방법을 설명합니다. 템플릿, TMPDIR, trap을 이용한 정리와 -u 옵션의 위험도 알아봅니다.

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

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

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

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

Linux / 명령어 / dd - 블록 단위 데이터 복사와 변환

Linux / 명령어 / dd - 블록 단위 데이터 복사와 변환

Linux dd 명령어로 파일과 블록 장치 데이터를 복사하고 변환하는 방법을 설명합니다. if와 of, 블록 크기, 진행률, 디스크 이미지 생성·복원 및 대상 장치 오지정 위험을 정리합니다.

Linux / 명령어 / watch - 명령 결과를 주기적으로 반복 확인

Linux / 명령어 / watch - 명령 결과를 주기적으로 반복 확인

Linux watch 명령어로 명령 결과를 일정 간격으로 반복 확인하는 방법을 설명합니다. -n, -d, -g, -p 옵션과 파이프·따옴표 사용법, 메모리·디스크·프로세스 모니터링 예제를 정리합니다.

Linux / 명령어 / sort - 텍스트 행 정렬

Linux / 명령어 / sort - 텍스트 행 정렬

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

Linux / 명령어 / timedatectl - 시간대와 시간 동기화 상태 관리

Linux / 명령어 / timedatectl - 시간대와 시간 동기화 상태 관리

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

Linux / 명령어 / time - 명령 실행 시간 측정

Linux / 명령어 / time - 명령 실행 시간 측정

Linux time 명령어로 명령과 파이프라인의 실행 시간 및 자원 사용량을 측정하는 방법을 설명합니다. Bash 예약어와 GNU /usr/bin/time의 차이, 출력 저장과 정확한 비교 방법을 정리합니다.