| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- 시스템관리
- linuxcommand
- linux
- PackageManagement
- UnixCommand
- 파일시스템
- coreutils
- terminal
- 정규표현식
- environment
- Unix명령어
- 유닉스
- 터미널
- 사용자관리
- 자바스크립트
- Solaris
- 쉘스크립트
- sysadmin
- cups
- JavaScript
- js
- 리눅스명령어
- 유닉스명령어
- UNIX
- 리눅스
- 명령어
- php
- bash
- shell
- tcsh
Archives
- Today
- Total
ioerror
tr 사용법 및 옵션 - 문자열 변환 및 삭제 처리 본문
반응형

tr - Translate or Delete Characters
표준 입력(stdin)으로 전달받은 문자열에서 특정 문자를 다른 문자로 치환하거나 삭제, 압축하는 CLI 기반의 텍스트 처리 도구이다. 파일명을 지정하여 직접 읽는 기능이 없으므로 파이프(|)나 리디렉션(<)과 함께 사용된다. 데이터 정제, 대소문자 변환, 불필요한 공백 제거 등 쉘 스크립트 작성 시 필수적으로 활용된다. 모든 유닉스 및 리눅스 계열 OS의 기본 쉘 환경에 포함되어 있다.
1. tr 용도
- 텍스트 데이터의 대문자/소문자 일괄 변환
- 개행 문자(\n)나 탭 문자를 공백 또는 다른 구분자로 치환
- 연속으로 중복 출력되는 공백이나 문자를 하나로 압축
- 텍스트 파일에서 알파벳, 숫자, 특수 문자 등 특정 캐릭터 세트만 삭제하거나 남김
- CSV, 로그 파일 등 데이터 파이프라인 처리 시 구분자 변경
2. tr 서식
Bash
tr [옵션] SET1 [SET2]
3. tr 옵션
| 옵션 | 설명 | 사용가능 OS 및 쉘 |
| -d, --delete | SET1에 해당하는 문자를 삭제 | All |
| -s, --squeeze-repeats | SET1에 해당하는 연속된 중복 문자를 단일 문자로 압축 | All |
| -c, -C, --complement | SET1의 보집합(SET1에 포함되지 않는 모든 문자)을 대상으로 지정 | All |
| -t, --truncate-set1 | SET1의 길이를 SET2의 길이에 맞게 강제로 잘라냄 | [Linux] |
명령어 옵션 사용 예시
Bash
# 1. 소문자를 대문자로 변환 (POSIX 문자 클래스 활용)
echo "hello world" | tr '[:lower:]' '[:upper:]'
# HELLO WORLD
# 2. 특정 문자(숫자) 일괄 삭제 (-d)
echo "User ID: 20260731" | tr -d '[:digit:]'
# User ID:
# 3. 연속된 공백을 단일 공백으로 압축 (-s)
echo "Linux Kernel 6.8" | tr -s ' '
# Linux Kernel 6.8
# 4. 알파벳과 개행을 제외한 모든 문자(보집합) 삭제 (-dc)
echo "Price: $150.00!" | tr -dc '[:alnum:]\n'
# Price150000
# 5. 개행 문자를 공백으로 변경하여 한 줄로 출력
cat << 'EOF' | tr '\n' ' '
line1
line2
line3
EOF
# line1 line2 line3
4. tr 특이사항(유의사항)
- 파일 직접 처리 불가: tr file.txt와 같이 파일명을 인자로 직접 전달하면 오류가 발생한다. 반드시 tr 'a' 'b' < file.txt 형태의 리디렉션이나 cat file.txt | tr 'a' 'b' 형태의 파이프를 사용해야 한다.
- 문자 일대일 대응 구조: tr "abc" "xyz"는 단어 "abc"를 "xyz"로 바꾸는 것이 아니라 'a'->'x', 'b'->'y', 'c'->'z'로 개별 문자 단위 치환을 수행한다. 단어 단위 치환이 필요한 경우 sed를 사용해야 한다.
- SET1과 SET2의 길이 불일치: GNU tr에서는 SET2가 SET1보다 짧으면 SET2의 마지막 문자를 SET1의 남은 문자들과 반복 매핑한다. 반면 BSD 계열(macOS)에서는 동작 방식이 다를 수 있으므로 표준 POSIX 문자 클래스([:upper:] 등)를 사용하는 것이 안전하다.
- 다국어(UTF-8) 처리 제약: 기본 tr 명령어는 바이트 단위로 문자를 처리하므로 멀티바이트 한글 문자 치환 시 글자가 깨질 수 있다. 한글 데이터 정제에는 sed나 awk 활용이 권장된다.
관련 명령어들
- sed: 스트림 에디터로, 단순 문자 치환을 넘어 정규표현식 기반의 단어/행 단위 편집 제공
- awk: 필드 및 패턴 기반 텍스트 처리 전문 프로그래밍 언어
- cut: 각 행에서 특정 필드나 바이트/문자 영역을 추출하는 명령어
- wc: 텍스트의 행, 단어, 바이트 수를 측정하는 명령어
https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference
UNIX & Linux Command Reference
유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하
ioerror.tistory.com
반응형
'OS' 카테고리의 다른 글
| tty 사용법 및 옵션 - 현재 터미널의 장치 파일명 출력 (0) | 2026.07.31 |
|---|---|
| traceroute 사용법 및 옵션 - 네트워크 패킷의 경로 및 지연 시간 추적 (0) | 2026.07.31 |
| touch 사용법 및 옵션 - 파일 생성 및 파일 시간 정보 변경 (0) | 2026.07.31 |
| uname 사용법 및 옵션 - 시스템 및 커널 정보 확인 (0) | 2026.07.31 |
| uname 사용법 및 옵션 - 시스템 정보 확인 명령 (0) | 2026.07.31 |
Comments