본문 바로가기
Back-end/Script

[Shell] 알파벳 대소문자 변경

by 허도치 2020. 2. 6.

1. tr 명령어를 이용한 방법.

   1-1. 변경대상 | tr [옵션] [SET1] [SET2]

         - 변경대상의 모든 텍스트를 [SET1]에서 [SET2]로 변환(translate)하는 명령어.

         - SET은 정규표현식과 유사한 표기법을 사용함.

         - 소문자: [:lower:], [a-z]

         - 대문자: [:upper:], [A-Z]

 

   1-2. 예제.

1
2
3
4
5
6
7
8
9
#소문자를 대문자로
text="abcde"
echo ${text} | tr [:lower:] [:upper:]    #ABCDE
echo ${text} | tr [a-z] [A-Z]            #ABCDE
 
#대문자를 소문자로
text="ABCDE"
echo ${text} | tr [:upper:] [:lower:]    #abcde
echo ${text} | tr [A-Z] [a-z]            #abcde
cs

 

   1-3. 정리.

         - 문자만 치환하는 기능을 지원하지 않음.

         - tr [a-z] [A-Z]와 같이 SET을 사용하는 경우, SET1SET2의 범위가 같아야함.

1
2
3
# 잘못된 사용
text="abcde"
echo ${text} | tr [a-c] [B-D]    #BCDde
cs

 

 

2. [ ^ ], [ , ] 키워드를 이용한 방법.

   2-1. 이 방법은 Bash 4 버전 이상부터 사용가능.

         - ${변수명^} 또는 ${변수명,}

         - [ ^ ]는 소문자를 대문자로 변경.

         - [ , ]는 대문자를 소문자로 변경.

         - tr 명령어보다 사용법이 간단하면서 첫 글자만 치환할 수 있는 기능을 제공함.

 

   2-2. 예제.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#소문자를 대문자로
text="abcde"
echo ${text^}         #Abcde
echo ${text^^}        #ABCDE
 
#특정 소문자만 대문자로
text="abcde abcde"
echo ${text^a}        #Abcde abcde
echo ${text^[b,e]}    #abcde abcde
echo ${text^^a}       #Abcde Abcde
echo ${text^^[b,e]}   #aBcdE aBcdE
 
#대문자를 소문자로
text="ABCDE"
echo ${text,}         #aBCDE
echo ${text,,}        #abcde
 
#특정 대문자만 소문자로
text="ABCDE ABCDE"
echo ${text,A}        #aBCDE ABCDE
echo ${text,[B,E]}    #ABCDE ABCDE
echo ${text,,A}       #aBCDE aBCDE
echo ${text,,[B,E]}   #AbCDe AbCDe
cs

 

   2-3. 정리.

         - 라인별로 치환할 때는 tr을 사용하는 것보다 이 방법을 사용하는게 속편함.

 

 

3. 마치며.

   - tr을 이용하면 문서 전체를 치환할 수 있는데, [ ^ ], [ , ]를 이용하면 라인별로 처리해야한다. 둘 다 장단점이 있지만, 문서 전체를 치환할 일이 거의 없기 때문에 bash 4버전 이상을 사용한다면 두번 째 방법을 사용하는 것을 추천한다.

'Back-end > Script' 카테고리의 다른 글

[Shell] 자주사용하는 명령어 정리  (0) 2020.02.10
[Shell] 조건문 - IF, CASE IN  (0) 2020.02.06
[Shell] Arguments 사용하기  (0) 2020.02.06

댓글