셸 문자열 캡 처

4022 단어
최전선
셸 스 크 립 트 를 작성 할 때 문자열 의 일 부 를 캡 처 하 는 경우 가 많 습 니 다.원본 문자열 에 따라 차이 가 크기 때문에 이 를 해결 하 는 방법 도 상황 에 따라 다르다.그래서 이 글 을 한꺼번에 다 쓸 수 는 없습니다. 저 는 쓰 면서 고 칠 것 입 니 다. 계속 업 데 이 트 를 할 것 입 니 다.
키 워드 를 알 고 캡 처 를 하 겠 습 니 다.
첫 번 째 상황 은 문자열 이 한 줄 만 있 고 이 줄 의 내용 은 특별한 구분자 가 없다 는 것 이다. 예 를 들 어 필드 마다 빈 칸 으로 나 누 는 것 이다.즉, 이것 은 어 지 러 운 문자열 입 니 다. 우 리 는 이 어 지 러 운 문자열 에서 어떤 키 워드 를 캡 처 하기 전이 나 그 후의 내용 을 캡 처 해 야 합 니 다.
//    varible              
// string               
// “*”      ,           

${varible#*string} //          string      ${varible##*string} //           string      ${varible%%string*} //           string      ${varible%string*} //          string      

위의 설명 을 살 펴 보면 어떻게 사용 하 는 지 잘 알 고 있 을 것 이다.
  • 왼쪽 에서 오른쪽으로 우물 번호 조작 부호 로 한다.
  • 왼쪽 에서 오른쪽으로 연결 부 호 는 문자열 왼쪽 에 있 습 니 다.
  • 오른쪽 에서 왼쪽으로 백분율 로 연산 자 를 사용한다.
  • 오른쪽 에서 왼쪽으로 연결 부 호 는 문자열 의 오른쪽 에 있 습 니 다.
  • 첫 번 째 에서 찾 아 연산 자 를 사용 합 니 다.
  • 마지막 으로 찾 아 두 개의 연산 자 를 사용한다.

  • 다음은 예 를 들 어 내 가 처리 해 야 할 문자열 이 MyVar 라 고 가정 하 자.
    MyVar=Test1Test2Test3LuanMaTest2Test3.Test4       //      MyVar
    echo $MyVar //  MyVar         //      : Test1Test2Test3LuanMaTest2Test3.Test4 echo ${MyVar#*Test2} //      : Test3LuanMaTest2Test3.Test4 echo ${MyVar##*Test2} //      : Test3.Test4 echo ${MyVar%Test2*} //      : Test1Test2Test3LuanMa echo ${MyVar%%Test2*} //      : Test1 

    문자열 의 구체 적 인 위 치 를 알 고 캡 처 합 니 다.
    원래 문자열 에서 고정된 위치의 하위 문자열 을 캡 처 해 야 한다 고 가정 하면 프로 그래 밍 언어 와 유사 한 색인 으로 캡 처 할 수 있 습 니 다.
    ${varible:n1:n2}        ##     varible n1   n2   ,        。
    ##    n1  ,     n2   ,      n2   
    
    ##       $MyVar       
    echo ${MyVar:5:10}
    ##      :      Test2Test3
    

    상기 두 가지 방식 은 모두 간단 한 문자열, 즉 한 줄 의 어 지 러 운 문자열 을 대상 으로 처리 합 니 다.나머지 는 계속.

    좋은 웹페이지 즐겨찾기