translate의 약자.
표준 입력에 들어온 문자열을 변조시키는데 사용되는 명령어.
변조된 결과물은 표준 출력에 출력한다.
tr [OPTION]... SET1 [SET2]
OPTION
: tr
동작 설정
SET1
: 변조될 조건의 문자들을 나타내는 곳
SET2
: 변조 대상인 문자들을 무슨 문자로 변조할지 나타내는 곳
기본 동작은 밑과 같다.
sycho@DESKTOP-4RPUOID:~$ echo "Linus developed both Linux and Git. How amazing!" | tr "o" "a"
Linus develaped bath Linux and Git. Haw amazing!
SET1
을 "abcd"
, SET2
를 "ABCD"
로 하면 a
는 A
, b
는 B
,...의 형식으로 변조된다.sycho@DESKTOP-4RPUOID:~$ echo "Linus developed both Linux and Git. How amazing!" | tr "abcd" "ABCD"
Linus DevelopeD Both Linux AnD Git. How AmAzing!
SET1
에 없는 문자열들을 바꾸기. (-c
)complement의 약자.
SET1
에 없는 문자열을, SET2
의 마지막 문자로 다 바꾼다.
\n
같은 특이 문자들도 전부 포함.
sycho@DESKTOP-4RPUOID:~$ echo "Linus developed both Linux and Git. How amazing!" | tr -c "a-d" "A-D"
DDDDDDdDDDDDDDdDbDDDDDDDDDDaDdDDDDDDDDDDaDaDDDDDDsycho@DESKTOP-4RPUOID:~$
SET1
에 있는 문자들을 지우기 (-d
)delete의 약자
SET1
의 문자들을 전부 제거한다.
SET2
가 필요가 없는 option.
sycho@DESKTOP-4RPUOID:~$ echo "Linus developed both Linux and Git. How amazing!" | tr -d "a-d"
Linus evelope oth Linux n Git. How mzing!
-s
)squeeze-repeats의 약자.
SET1
에 있는 문자들 중 하나가 연속으로 나올 경우 이를 하나로 뭉치는 option
SET2
를 넣는것도 간으한데, 이 경우 하나로 뭉쳐진 문자가 SET2
의 문자로 대체된다.
sycho@DESKTOP-4RPUOID:~$ echo "Hello~~~~~~~~~~~~~~!" | tr -s "~" "-"
Hello-!
SET1
을 SET2
크기로 일단 조절 (-t
)truncate-set1의 약자다.
SET1
이 크기가 SET2
보다 큰 경우 일단 SET2
만큼의 크기로 맞추고 변조를 한다.
밑의 경우 -t
option을 사용시 ub
를 먼저 s
크기에 맞게 u
로 바꾸고, 그 다음에 그것들을 전부 s
로 바꾼다.
없는 경우에 u
랑 b
에 해당하는걸 전부 s
로 바꾼것과 차이를 보인다.
sycho@DESKTOP-4RPUOID:~$ echo "Linux? Ubuntu? I don't know which to learn..." | tr "ub" "s"
Linsx? Ussnts? I don't know which to learn...
sycho@DESKTOP-4RPUOID:~$ echo "Linux? Ubuntu? I don't know which to learn..." | tr -t "ub" "s"
Linsx? Ubsnts? I don't know which to learn...
SET
범위 형태로 나타내기.SET
의 경우 -
을 사용해서 오름차순 형태로 문자 범위를 나타내는 것도 가능하다.sycho@DESKTOP-4RPUOID:~$ echo "Linus developed both Linux and Git. How amazing!" | tr "a-d" "A-D"
Linus DevelopeD Both Linux AnD Git. How AmAzing!
sycho@DESKTOP-4RPUOID:~$ echo "He llo" | tr -s " "
He llo
SET
지정시 특별하게 지정이 가능한 집합들이 몇개 있다. 대괄호를 보통 사용하는데, 숫자들의 경우 [:digit:]
을 사용하면 된다.sycho@DESKTOP-4RPUOID:~$ echo "1234567 countdown to 7654321" | tr -d [:digit:]
countdown to
SET
를 활용sycho@DESKTOP-4RPUOID:~$ echo "hello everyone!" | tr [:lower:] [:upper:]
HELLO EVERYONE!
sycho@DESKTOP-4RPUOID:~$ echo "h#e#llo#ev##ery#@&*(one" | tr -cd [:alnum:]
helloeveryonesycho@DESKTOP-4RPUOID:~$
sycho@DESKTOP-4RPUOID:~$ echo "phone number : 01012345678" | tr -cd [:digit:]
01012345678sycho@DESKTOP-4RPUOID:~$
sycho@DESKTOP-4RPUOID:~$ echo -e "I\nLove\nLinux" | tr "\n" " "
I Love Linux sycho@DESKTOP-4RPUOID:~$
sycho@DESKTOP-4RPUOID:~$ echo "I Love Linux" | tr [:space:] "\n"
I
Love
Linux