고급 Bash 스 크 립 트 프로 그래 밍 가이드 (11): 작업 문자열
7569 단어 shell
견지했어
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 계속...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.