joebloggs
추가 프로세스없이 매개 변수 확장을 사용하여 bash에서이 문자열 을 추출하려면 ...
MYVAR="/var/cpanel/users/joebloggs:DNS9=domain.com"
NAME=${MYVAR%:*} # retain the part before the colon
NAME=${NAME##*/} # retain the part after the last slash
echo $NAME
joebloggs
경로의 특정 깊이에있는 것에 의존하지 않습니다 .
요약
참조를 위해 몇 가지 매개 변수 확장 모드에 대한 개요 ...
${MYVAR#pattern} # delete shortest match of pattern from the beginning
${MYVAR##pattern} # delete longest match of pattern from the beginning
${MYVAR%pattern} # delete shortest match of pattern from the end
${MYVAR%%pattern} # delete longest match of pattern from the end
따라서 #
처음부터 일치를 의미하고 (주석 줄을 생각해보십시오) %
끝부터 의미합니다. 하나의 인스턴스는 가장 짧은 것을 의미하고 두 개의 인스턴스는 가장 긴 것을 의미합니다.
숫자를 사용하여 위치에 따라 부분 문자열을 얻을 수 있습니다.
${MYVAR:3} # Remove the first three chars (leaving 4..end)
${MYVAR::3} # Return the first three characters
${MYVAR:3:5} # The next five characters after removing the first 3 (chars 4-9)
다음을 사용하여 특정 문자열 또는 패턴을 바꿀 수도 있습니다.
${MYVAR/search/replace}
은 pattern
파일 이름 일치 동일한 포맷이므로, *
(모든 자)들은 같은 특정 기호 뒤에 공통 /
또는.
예 :
다음과 같은 변수가 주어지면
MYVAR="users/joebloggs/domain.com"
파일 이름을 남기는 경로를 제거하십시오 (슬래시까지의 모든 문자) :
echo ${MYVAR##*/}
domain.com
경로를 남겨두고 파일 이름을 제거합니다 (마지막 일치 후 가장 짧은 일치 항목 삭제 /
).
echo ${MYVAR%/*}
users/joebloggs
파일 확장자 만 가져옵니다 (마지막 기간 이전에 모두 제거).
echo ${MYVAR##*.}
com
참고 : 두 작업을 수행하려면 두 작업을 결합 할 수 없지만 중간 변수에 할당해야합니다. 따라서 경로 나 확장자없이 파일 이름을 얻으려면 :
NAME=${MYVAR##*/} # remove part before last slash
echo ${NAME%.*} # from the new var remove the part after the last period
domain