셸 문자열 캡처의 구현 방법 (매우 상세)
지정된 위치부터 캡처하기
이 방식은 두 개의 매개 변수가 필요합니다. 시작 위치를 지정하는 것 외에 길이를 캡처해야 캡처할 문자열을 최종적으로 확정할 수 있습니다.
시작 위치를 지정해야 하기 때문에 계수 방향과 관련된 문제입니다. 문자열 왼쪽부터 계수할 것인가, 아니면 문자열 오른쪽부터 계수할 것인가.정답은 셸이 두 가지 계수 방식을 동시에 지원한다는 것이다.
1) 문자열 왼쪽부터 카운트
문자열의 왼쪽에서 숫자를 계산하려면 문자열의 구체적인 형식은 다음과 같습니다.
${string: start :length}
그 중에서string은 캡처할 문자열이고 start는 시작 위치(왼쪽부터, 0부터 계수)이며 length는 캡처할 길이입니다. (생략하면 문자열의 끝까지 표시됩니다.)예:
url="jb51.net"
echo ${url: 2: 9}
결과는 Biancheng입니다.또한 다음과 같습니다.
url="jb51.net"
echo ${url: 2} # length,
결과는 biancheng.net.2) 오른쪽부터 카운트
문자열의 오른쪽부터 숫자를 계산하려면 문자열의 구체적인 형식은 다음과 같습니다.
${string: 0-start :length}
1) 형식에 비해 2) 형식은 0보다 겨우 많은데 이것은 고정된 쓰기 방법으로 문자열 오른쪽부터 계산하는 것을 나타내는 데 쓰인다.여기서 강조해야 할 점은 다음과 같습니다.
url="jb51.net"
echo ${url: 0-13: 9}
결과는 Biancheng입니다.오른쪽에서 b는 13글자입니다.또한 다음과 같습니다.
url="jb51.net"
echo ${url: 0-13} # length,
결과는 biancheng.net.지정한 문자열부터 캡처하기
이 절취 방식은 문자열의 길이를 지정할 수 없으며, 지정된 문자열 (하위 문자열) 에서 문자열의 끝까지 절취할 수 있습니다.셸은 지정된 문자열(하위 문자열) 오른쪽의 모든 문자를 캡처하거나 왼쪽의 모든 문자를 캡처할 수 있습니다.
1) # 번호를 사용하여 오른쪽 문자 자르기
# 번호를 사용하여 지정된 문자열 (또는 하위 문자열) 의 오른쪽에 있는 모든 문자를 다음과 같이 캡처할 수 있습니다.
${string#*chars}
그 중에서string은 캡처할 문자를 표시하고,chars는 지정한 문자열(또는 하위 문자열), *는 어댑터의 일종으로 임의의 길이를 표시하는 문자열입니다. *chars 연결은 왼쪽의 모든 문자를 무시하고 chars를 만날 때까지 사용합니다.다음 예제를 참조하십시오.
url="http://jb51.net/index.html"
echo ${url#*:}
결과는//jb51입니다.net/index.html.다음 글도 같은 결과를 얻을 수 있습니다.
echo ${url#*p:}
echo ${url#*ttp:}
chars의 왼쪽 문자를 무시할 필요가 없으면 *를 사용하지 않을 수도 있습니다. 예를 들면:
url="http://jb51.net/index.html"
echo ${url#http://}
결과는 jb51입니다.net/index.html.위의 쓰기 방법은 첫 번째 일치하는 문자열 (하위 문자열) 을 만나면 끝납니다.예:
url="http://jb51.net/index.html"
echo ${url#*/}
결과는/jb51입니다.net/index.html.URL 문자열에 세 개의/가 있습니다. 출력 결과 셸이 첫 번째/를 만났을 때 일치하는 것이 끝났습니다.마지막 지정한 문자열 (하위 문자열) 이 끝날 때까지 일치하려면 # # 을 사용할 수 있습니다.
${string##*chars}
다음 예제를 참조하십시오.
#!/bin/bash
url="http://jb51.net/index.html"
echo ${url#*/} # /jb51.net/index.html
echo ${url##*/} # index.html
str="---aa+++aa@@@"
echo ${str#*aa} # +++aa@@@
echo ${str##*aa} # @@@
2)% 를 사용하여 왼쪽 문자 자르기
% 번호를 사용하여 지정된 문자 (또는 하위 문자열) 의 왼쪽에 있는 모든 문자를 캡처할 수 있습니다. 형식은 다음과 같습니다.
${string%chars*}
* 의 위치를 주의하십시오. chars 왼쪽의 문자를 캡처하고 chars 오른쪽의 문자를 무시하기 때문에 *는 chars 오른쪽에 있어야 합니다.다른 측면에서% 와 # 의 사용법은 동일합니다. 여기서 더 이상 설명하지 않고 예를 들어 설명하십시오.
#!/bin/bash
url="http://jb51.net/index.html"
echo ${url%/*} # http://jb51.net
echo ${url%%/*} # http:
str="---aa+++aa@@@"
echo ${str%aa*} # ---aa+++
echo ${str%%aa*} # ---
총결산
마지막으로, 우리는 상기 8가지 형식을 종합하여 다음 표를 보십시오.
형식
설명
${string: start :length}
string 문자열의 왼쪽 첫 번째 start 문자부터 시작하여 오른쪽으로length 문자를 캡처합니다.
${string: start}
string 문자열의 왼쪽 첫 번째 start 문자부터 마지막까지 캡처합니다.
${string: 0-start :length}
string 문자열의 오른쪽 첫 번째 start 문자부터 시작해서 오른쪽으로length 문자를 캡처합니다.
${string: 0-start}
string 문자열의 오른쪽 첫 번째 start 문자부터 마지막까지 캡처합니다.
${string#*chars}
string 문자열이 처음 나타나는 *chars의 위치부터 *chars 오른쪽의 모든 문자를 캡처합니다.
${string##*chars}
string 문자열이 마지막으로 *chars가 나타나는 위치부터 *chars 오른쪽의 모든 문자를 캡처합니다.
${string%*chars}
string 문자열이 처음 나타나는 *chars의 위치부터 *chars 왼쪽의 모든 문자를 캡처합니다.
${string%%*chars}
string 문자열이 마지막으로 *chars가 나타나는 위치부터 *chars 왼쪽의 모든 문자를 캡처합니다.
셸 문자열 캡처의 실현 방법 (매우 상세한) 에 관한 이 글은 여기에 소개되었습니다. 더 많은 셸 문자열 캡처 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.