고급 Bash 스 크 립 트 프로 그래 밍 가이드 (11): 작업 문자열

7569 단어 shell
고급 Bash 스 크 립 트 프로 그래 밍 가이드 (11): 작업 문자열
견지했어
Bash 가 지원 하 는 문자열 의 수 는 놀 라 울 정도 로 많 습 니 다. 그러나 불행 하 게 도 이 도구 들 은 통 일 된 기준 이 없습니다. 일 부 는 매개 변수 가 교 체 된 부분 집합 이 고, 다른 일 부 는 UNIX expr 명령 의 영향 을 받 습 니 다. 이 로 인해 명령 문법 이 일치 하지 않 고 불필요 한 기능 을 일 으 킬 수 있 습 니 다. 그러나 이것 은 혼란 을 일 으 키 지 않 습 니 다.
문자열 길 이 를 얻 는 방법:
1 ${\# string} 2 expr length $string
3 expr "$string": ". *"
root@ubuntu:~/resource/shell-study/0507-2013# string="abcdefg"
root@ubuntu:~/resource/shell-study/0507-2013# echo ${#string}
7
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr length $string`
7
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr "$string" : '.*'`
7
root@ubuntu:~/resource/shell-study/0507-2013#

학습 방법: 텍스트 파일 의 단락 사이 에 빈 줄 삽입
#!/bin/bash

MINLEN=3
while read line
do 
	echo "$line"
	len=${#line}
	if [ "$len" -lt "$MINLEN" ];then
		echo 
	fi
done

exit 0
결과:
root@ubuntu:~/resource/shell-study/0507-2013# ./test6.sh <file.txt 
12345
12

121321313
12

131234
2

123424155
3rwq
e

wer
weee
ee

e

eeeerqwte
root@ubuntu:~/resource/shell-study/0507-2013# 

문자열 시작 과 일치 하 는 하위 문자열 길이
방법 1 expr match "$string""$substring"
$substring 은 정규 표현 식 입 니 다. 방법 2 expr "$string": '$substring'
$substring 은 정규 표현 식 입 니 다.
색인 expr index $string $substring 문자열 $string 에 일치 하 는 $substring 이 처음으로 나타 난 위치 입 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string=abcABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr index "$string" C12`
6
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr index "$string" A`
4
root@ubuntu:~/resource/shell-study/0507-2013#

추출 문자열
방법 1
${string:position}
$string 에서 위치 $position 에서 하위 문자열 을 추출 합 니 다. $string 이 "*"또는 "@"이면 위치 $position 에서 시작 하 는 위치 파 라미 터 를 추출 합 니 다.
${string:position:length}
$string 에서 위치 $position 에서 $length 길이 의 하위 문자열 을 추출 합 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string:0}
abcABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string:2}
cABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string:8}
3ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string:8:3}
3AB
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string:-4}
abcABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string:(-4)}
Cabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string: -4}
Cabc
root@ubuntu:~/resource/shell-study/0507-2013# 
기본 값 은 전체 문자열 을 추출 하 는 것 입 니 다. ${parameter: - default} 과 같 기 때문에 마지막 세 번 째 명령 은 전체 문자열 을 되 돌려 줍 니 다. 그러나 괄호 를 사용 하거나 빈 칸 을 추가 하면 '전의' 라 는 위치 변 수 를 추가 할 수 있 습 니 다. 의식 은 마지막 네 글 자 를 인쇄 하 는 것 입 니 다.
$string 매개 변수 가 "*"또는 "@"이면 $position 위치 부터 $length 개 위치 매개 변 수 를 추출 합 니 다. 그러나 $length 개 위치 매개 변수 가 없 을 수 있 으 므 로 몇 개의 위치 매개 변 수 를 추출 하 는 방법 2:
expr substr $string $position $length $string 에서 $position 에서 $length 길이 의 하위 문자열 을 추출 합 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr substr $string 1 2`
ab
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr substr $string 1 4`
abcA
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr substr $string 4 3`
ABC
root@ubuntu:~/resource/shell-study/0507-2013# 

방법 3:
expr match "$string"'\($substring\)'
$string 의 시작 위치 에서 $substring 을 추출 합 니 다. $substring 은 정규 표현 식 입 니 다.
expr "$string": '\($substring\)'
$string 의 시작 위치 에서 $substring 을 추출 합 니 다. $substring 은 정규 표현 식 입 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr match "$string" '\(.[b-c]*[A-Z]..[0-9]\)'`
abcABC1
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr "$string" : '\(.[b-c]*[A-Z]..[0-9]\)'`
abcABC1
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr "$string" : '\(.....\)'`
abcAB
root@ubuntu:~/resource/shell-study/0507-2013# 

방법 4:
expr match "$string"'.*\($substring\)'
$string 의 끝 에서 $substring 을 추출 합 니 다. $substring 은 정규 표현 식 입 니 다.
expr "$string": '.*\($substring\)'
$string 의 끝 에서 $substring 을 추출 합 니 다. $substring 은 정규 표현 식 입 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr match "$string" '.*\([A-C][A-C][A-C][a-c]*\)'`
ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr "$string" : '.*\([A-C][A-C][A-C][a-c]*\)'`
ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo `expr "$string" : '.*\(.....\)'`
BCabc
root@ubuntu:~/resource/shell-study/0507-2013# 

하위 꼬치 제거
방법 1:
${string#substring}
$string 의 시작 위치 에서 가장 짧 은 일치 하 는 $substring 을 잘라 냅 니 다.
${string##substring}
$string 의 시작 위치 에서 최 장 일치 하 는 $substrin 을 자 릅 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string#a*c}
ABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string#a*C}
123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string##a*C}
abc
root@ubuntu:~/resource/shell-study/0507-2013# 

방법 2:
${string%substring}
$string 의 끝 위치 에서 가장 짧 은 일치 하 는 $substring 을 차단 합 니 다.
${string%%substring}
$string 의 끝 위치 에서 최 장 일치 하 는 $substring 을 차단 합 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string%b*c}
abcABC123ABCa
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string%%b*c}
a
root@ubuntu:~/resource/shell-study/0507-2013# 

하위 문자열 교체
방법 1:
${string/substring/replacement}
$replacement 을 사용 하여 첫 번 째 일치 하 는 $substring 을 교체 합 니 다.
${string//substring/replacement}
$replacement 을 사용 하여 일치 하 는 $substring 을 교체 합 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string/abc/xyz}
xyzABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string//abc/xyz}
xyzABC123ABCxyz
root@ubuntu:~/resource/shell-study/0507-2013# 

방법 2:
${string/#substring/replacement}
$substring 이 $string 의 시작 부분 과 일치 하면 $replacement 으로 $substring 을 대체 합 니 다.
${string/%substring/replacement}
$substring 이 $string 의 끝 부분 과 일치 하면 $replacement 으로 $substring 을 대체 합 니 다. 이 방법 은 시작 부분 이나 끝 부분 만 처리 하고 중간 문자 에 아무런 역할 을 하지 않 습 니 다.
root@ubuntu:~/resource/shell-study/0507-2013# string="abcABC123ABCabc"
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string/#abc/XYZ}
XYZABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string/%abc/XYZ}
abcABC123ABCXYZ
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string/%ABC/XYZ}
abcABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# echo ${string/#ABC/XYZ}
abcABC123ABCabc
root@ubuntu:~/resource/shell-study/0507-2013# 

먼저 여기까지, O (∩ ∩) O ~
내 칼럼 주소:http://blog.csdn.net/column/details/shell-daily-study.html 계속...

좋은 웹페이지 즐겨찾기