[맥 터미널 / Unix] tr 커맨드로 파일 안의 내용 바꾸기(치환)

맥의 터미널(Unix) 환경에서 파일 안의 내용을 치환하는 방법입니다. Unix의 tr 커맨드는 ‘translate characters’, 즉 텍스트 파일 내의 문자들을 치환해주는 기능을 수행합니다. 텍스트에 일정한 규칙이나 패턴이 존재한다면 tr 커맨드를 유용하게 사용할 수 있습니다.

  • UPDATE 2019-03-11 : 이미지 및 문구 수정


tr 커맨드 설명

단순한 치환 예시를 위주로 기록해두었으며, 자세한 내용은 ‘man tr’ 혹은 링크를 통해 확인하시면 됩니다.

기본 문법 ▼

$ tr [Option] [Set1] [Set2]

옵션 ▼

  • -c : complements, [Set1]의 문자열을 제외한 나머지 문자를 모두 [Set2]의 문자열로 치환합니다.
  • -d : delete, [Set1]에 지정된 문자열을 삭제합니다.
  • -s : single occurrence, 단일 문자에 적용하는 옵션으로 [Set2]에 해당하는 중복되는 문자를 정리합니다.
  • -t : truncates, [Set1]의 문자열을 [Set2]의 문자열 길이로 자릅니다.

 

tr 커맨드 예시

모든 번호와 – 기호 삭제 | -d 옵션 ▼

Phone number : 010-1111-2222 > Phone number :

$ echo "Phone number : 010-1111-2222"| tr -d '[:digit:]\-'
Phone number :

 

c를 제외한 모두를 z로 치환 | -c 옵션 ▼

abcdefghijklmnopqrstuvwxyz > zzczzzzzzzzzzzzzzzzzzzzzzzz

$ echo abcdefghijklmnopqrstuvwxyz | tr -c 'c' 'z' 
zzczzzzzzzzzzzzzzzzzzzzzzzz

 

abc를 제외한 모두를 z로 치환 | -c 옵션 ▼

abcdefghijklmnopqrstuvwxyz > abczzzzzzzzzzzzzzzzzzzzzzzz

$ echo abcdefghijklmnopqrstuvwxyz | tr -c 'abc' 'z'
abczzzzzzzzzzzzzzzzzzzzzzzz

 

File Input(<)을 이용한 모든 소문자 대문자로 치환 ▼

example4.txt 내의 모든 소문자 텍스트를 대문자로 치환

$ cat example4.txt
Phone number : 010-1111-2222
$ tr "a-z" "A-Z" < example4.txt
PHONE NUMBER : 010-1111-2222
$ tr "[:lower:]" "[:upper:]" < example4.txt
PHONE NUMBER : 010-1111-2222

 

숫자와 -기호를 제외하고 모두 삭제 | -c, -d 옵션 ▼

Phone number : 010-1111-2222 > 010-1111-2222

$ echo "Phone number : 010-1111-2222"| tr -cd '[:digit:]\-'
010-1111-2222

 

연속으로 나오는 공백 하나로 통합하기 | -s 옵션 ▼

squeezing          repeating        characters > squeezing repeating characters

$ echo 'squeezing          repeating        characters' | tr -s '[:space:]'
squeezing repeating characters

 

‘abcdefgh’ 조건에 만족하는 모든 문자 ‘123’으로 치환 ▼

단, ‘123’의 길이(3)에 벗어나는 문자가 나올 때는 ‘123’의 마지막 문자 ‘3’이 반복됩니다.

$ echo 'This is an Example' | tr 'abcdefgh' '123'
T3is is 1n Ex1mpl3

 

결과물의 첫 두 라인 출력 | head -2 ▼

알파벳이 아닌 문자를 하나로 통합한 후에 개행문자(\n)로 치환

$ echo 'This is an Example' | tr -cs "[:alpha:]" "\n" | head -2
This
is

 

결과물의 마지막 두 라인 출력 | tail -2 ▼

$ echo 'This is an Example' | tr -cs "[:alpha:]" "\n" | tail -2
an
Example

이상입니다.

참고

댓글 남기기