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을 사용하는 경우, SET1과 SET2의 범위가 같아야함.
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 |
댓글