1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #!/bin/bash # 배쉬 쉘 # Description : Modify config file because line is changed # 입력 파라미터 갯수 체크 (1개만 가능) if [ $# -gt 1 ] then echo " *** Error> Wrong argument number" exit 1 fi # 입력 파라미터 유효성 체크 ( 1 ~ 24 까지만 ) if [ $1 -lt 0 -o $1 -gt 24 ] then echo " *** Error> Wrong argument (input between 1 and 24)" exit 1 fi # 입력 파라미터의 길이가 1이라면(10보다 작으면) 파라미터에 "0"을 붙여줌 if [ ${#1} -eq 1 ] then temp="${1/?/0$1}" # 첫번째(1) 입력파라미터 한자리(?)에 대한값을 "0" + $1로 변경 else temp="$1" fi # cd2k_iplu.cfg 파일 내용중 "LINE(2자리)_" 의 값을 "LINE($temp)_"으로 치환 sed "s/LINE.._/LINE"$temp"_/g" FileName.txt > tmp mv tmp FileName.txt | cs |
--- 문자열 조작법 (출처 : KLDP) ---
1. 문자열 길이
- ${#string}
- expr length $string
- expr "$string" : '.*'
stringZ=abcABC123ABCabc
echo ${#stringZ} # 15
echo `expr length $stringZ` # 15
echo `expr "$stringZ" : '.*'` # 15
2. 문자열조각 추출(Substring Extraction)
- ${string:position}
-
$string 의 $position 부터의 문자열조각을 추출.
string 매개변수가 "*" 이거나 "@" 라면 position에서 시작하는 위치 매개변수 [1] 를 추출해 냅니다.
- ${string:position:length}
-
$string의 $position부터 $length만큼의 문자를 추출해 냅니다.
stringZ=abcABC123ABCabc - # 0123 45 6789.....
- # 0 부터 시작하는 인덱싱.
- echo ${stringZ:0} # abcABC123ABCabc
- echo ${stringZ:1} # bcABC123ABCabc
- echo ${stringZ:7} # 23ABCabc
- echo ${stringZ:7:3} # 23A
- # 3글자짜리 문자열조각.
- ${string/substring/replacement}
-
처음 일치하는 $substring을 $replacement로 대치.
- ${string//substring/replacement}
-
일치하는 모든 $substring을 $replacement로 대치.
- ${string/substring/replacement}
- 처음 일치하는 $substring을 $replacement로 대치.
- ${string//substring/replacement}
- 일치하는 모든 $substring을 $replacement로 대치.
-
-
stringZ=abcABC123ABCabc
echo ${stringZ/abc/xyz} # xyzABC123ABCabc
# 처음 일치하는 'abc'를 'xyz'로 대치.
echo ${stringZ//abc/xyz} # xyzABC123ABCxyz
# 일치하는 모든 'abc'를 'xyz'로 대치 -
echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc
# 맨 앞에서 일치하는 'abc'를 'xyz'로 대치.
echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ
# 맨 뒤에서 일치하는 'abc'를 'xyz'로 대치.
4. 문자열조각 삭제(Substring Removal)
-
- ${string#substring}
-
$string의 앞 부분에서부터 가장 짧게 일치하는 $substring을 삭제.
- ${string##substring}
-
$string의 앞 부분에서부터 가장 길게 일치하는 $substring을 삭제
- # |-----|
- # |------------|
- echo ${stringZ#a*C} # 123ABCabc
- # 'a'와 'C' 사이에서 가장 짧게 일치되는 부분을 삭제.
- echo ${stringZ##a*C} # abc
- # 'a'와 'C' 사이에서 가장 길게 일치되는 부분을 삭제.
- stringZ=abcABC123ABCabc
- # ||
- # |---------------|
- echo ${stringZ%b*c} # abcABC123ABCa
- # $stringZ의 뒷 부분부터 계산해서 'b'와 'c' 사이에서 가장 짧게 일치하는 부분을 삭제.
- echo ${stringZ%%b*c} # a
- # $stringZ의 뒷 부분부터 계산해서 'b'와 'c' 사이에서 가장 길게 일치하는 부분을 삭제.
[출처] [본문스크랩] shell 문자열 연산 처리|작성자 jcckitty
'컴퓨터활용 > 유닉스' 카테고리의 다른 글
truss를 이용한 input/output 내역 모니터링 (0) | 2008.05.13 |
---|---|
find 명령어 옵션 (2) | 2008.05.12 |
VI 에디터 120% 사용하기 (0) | 2007.12.18 |
awk를 이용한 substr (0) | 2007.03.11 |
.vimrc (0) | 2007.03.07 |