2016-08-18 3 views
1

문자열이 있고 그 내용이 US1SERVLOC2이라고 가정 해 봅시다. 해당 문자열에서 US1LOC2 문자열을 가져올 수 있기를 원합니다.문구로 구분 된 두 개의 문자열을 어떻게 얻을 수 있습니까?

echo "US1SERVLOC2" | cut -f1 -d 'SERV' 
echo "US1SERVLOC2" | cut -f2 -d 'SERV' 

원래 시도했지만 잘라내 기가 한 문자가 아닌 구분 기호를 사용하지 않았습니다. 어떻게해야합니까?

답변

3

시도 :

s=US1SERVLOC2 
echo ${s%SERV*} # prints US1 
echo ${s#*SERV} # prints LOC2 

참조하십시오 Advanced Bash-Scripting Guide

  • 하위 문자열 제거 섹션.

  • question.

참고 :

  • %SERV*s의 끝에서 SERV*를 잘라 것입니다.
  • #*SERVs의 시작 부분에서 *SERV을 자릅니다. SERV 여러 번 나타나는 경우
  • , 당신은/## 대신 %/#%%이 경기를 확장 할 수 있습니다. 그러나 이것은 SERV의 첫 번째 또는 마지막 발생시에만자를 수 있습니다. 이 적합하지 않은 경우, awk 기꺼이 멀티 문자 필드 구분을 받아 들일 것입니다 :

    s=US1SERVLOC1US2SERVLOC2US3SERVLOC3 
    echo $s | awk -F "SERV" '{print $2}' # prints LOC1US2 
    
2

를 사용하여 내장 된 쉘 variable expansion 연산자.

var=US1SERVLOC2 
part1=${var%SERV*} 
part2=${var#*SERV} 

그러나이 번 문자열보다가 나타납니다 cutSERV 경우 시도와 동일하게 작동하지 않습니다.

관련 문제