[Command-line] tr 명령어를 이용한 character set 변환 및 삭제

2021. 1. 5. 22:28Linux/Command-line

반응형

tr

translate characters

문자세트를 변환하는 command line 명령어입니다.

tr [-c] set1 set2
tr [-c] -d set1
tr [-c] -s set1
tr [-c] -s set1 set2

1.1. 옵션

  • -d
    • --delete
    • set1에 해당되는 문자세트를 지운다.
  • -c
    • --complement
    • set1을 제외한 모든 문자세트를 set2로 변환한다.
    • set1의 여집합(set1cset1^c)
  • -s
    • --squeeze-repeats
    • 변환한 문자세트의 반복되는 문자를 1문자로 압축합니다.
    • 변환할 문자세트가 단일문자 세트일 경우에만 적용할 수 있습니다.

1.2. 문자 set

set1, set2에 설정할 수 있는 문자 set

  • c1-c2
    • c1 문자부터 c2 문자까지
    • ex) a-z
  • [:class:]
    • 문자 클래스
    • [:alnum:]   알파벳 + 숫자
    • [:alpha:]   알파벳
    • [:digit:]   숫자(10진수)
    • [:xdigit:]   숫자(16진수)
    • [:lower:]   알파벳(소문자)
    • [:upper:]   알파벳(대문자)
    • [:blank:]   whitespace 문자(공백)
    • [:space:]   공백 + newline
    • [:special:]   특수문자
  • \character
    • 특수문자
    • \a : alert character
    • \b : backspace
    • \f : form-feed
    • \n : newline
    • \r : carriage return
    • \t : tab
    • \v : virtical tab

2. 실습

아래 문서를 이용하여 실습을 해봅시다.

cat apple.txt
grape 12345 nnnnn
abcde pine2 mmmmm
apple viooo fifif
melon rrrrr dmmmn
cocoa ooooo sksks

2.1. 문자 세트 변환

tr set1 set2

set1 문자세트를 set2로 변환합니다.

문자로 변환

cat apple.txt | tr [:blank:] '|'
grape|12345|nnnnn
abcde|pine2|mmmmm
apple|viooo|fifif
melon|rrrrr|dmmmn
cocoa|ooooo|sksks

소문자를 대문자로 변환

cat apple.txt | tr [:lower:] [:upper:]
GRAPE 12345 NNNNN
ABCDE PINE2 MMMMM
APPLE VIOOO FIFIF
MELON RRRRR DMMMN
COCOA OOOOO SKSKS

2.2. 문자세트 제거

tr -d set1

set1 문자세트를 제거합니다.

문자제거

a문자를 제거합니다.

cat apple.txt | tr -d a
grpe 12345 nnnnn
bcde pine2 mmmmm
pple viooo fifif
melon rrrrr dmmmn
coco ooooo sksks

digit 제거

cat apple.txt | tr -d [:digit:]
grape  nnnnn
abcde pine mmmmm
apple viooo fifif
melon rrrrr dmmmn
cocoa ooooo sksks

alpha 제거

cat apple.txt | tr -d [:alpha:]
 12345
 2



알파벳만 제거했기 때문에 digit문자와 space문자는 남아있습니다.

space 제거

space에는 공백 + newline이기 때문에 개행과 띄어쓰기가 모두 제거되었습니다.

cat apple.txt | tr -d [:space:]
grape12345nnnnnabcdepine2mmmmmappleviooofififmelonrrrrrdmmmncocoaooooosksks

2.5. 문자세트를 제외한 모든 문자세트 변환

tr [-c] set1 set2

-c 옵션을 사용하면 set1 문자세트를 제외한 모든 문자세트를 set2로 변환하는 의미가 됩니다.

tr [-c] -d set1
tr [-c] -s set1
tr [-c] -s set1 set2

이외의 다른 명령어들도 마찬가지 입니다.

a-e문자세트를 제외한 모든 문자세트를 z로 변환

cat apple.txt | tr -c a-e 'z'
zzazezzzzzzzzzzzzzabcdezzzzezzzzzzzzazzzezzzzzzzzzzzzzzezzzzzzzzzzdzzzzzczczazzzzzzzzzzzzz

2.4. 변환문자 반복 압축

변환할 문자세트가 단일문자일때에만 사용할 수 있는 옵션입니다.

tr [-c] -s set1

set1만 사용할 경우 특정 문자가 중복적으로 변환된 것을 한글자로 압축합니다.

cat apple.txt | tr -s 'm'
grape 12345 nnnnn
abcde pine2 m
apple viooo fifif
melon rrrrr dmn
cocoa ooooo sksks

apple.txt 파일의 중복되는 m글자를 한글자로 압축했습니다.

또, -c옵션과 함께 사용하여 특정문자를 제외한 문자를 set2('z')로 치환한 후 치환된 문자열을 압축할 수도 있습니다.

cat apple.txt | tr -sc a-e 'z'
zazezabcdezezazezezdzczczaz
cat apple.txt | tr -sc a-e ' '
 a e abcde e a e e d c c a

tr [-c] -ds set1 set2

++

  • character set translate using tr command
  • tr command in Unix/Linux
728x90
반응형