sh의 문자열에서 알려진 부분 문자열을 잘라내는 방법은 무엇입니까? 예를 들어, 문자열 "http://www.myserver.org/very/very/long/path/mystring"
표현 "http://www.myserver.org/very/very/long/path/"
이 알려져 있습니다. "mystring"을 어떻게 얻을 수 있습니까?알려진 부분 문자열을 잘라 내기
감사합니다.
sh의 문자열에서 알려진 부분 문자열을 잘라내는 방법은 무엇입니까? 예를 들어, 문자열 "http://www.myserver.org/very/very/long/path/mystring"
표현 "http://www.myserver.org/very/very/long/path/"
이 알려져 있습니다. "mystring"을 어떻게 얻을 수 있습니까?알려진 부분 문자열을 잘라 내기
감사합니다.
예. perl 사용 :
echo "http://www.myserver.org/very/very/long/path/mystring" | perl -pe 's|^http://www.myserver.org/very/very/long/path/(.*)$|\1|'
예 : sed 사용 :
echo "http://www.myserver.org/very/very/long/path/mystring" | sed 's|^http://www.myserver.org/very/very/long/path/\(.*\)$|\1|'
예 : 검색 문자열이 변수에 보관되면 여기에 variable
이라는 이름이 지정됩니다. 변수를 확장하려면 큰 따옴표를 사용하십시오. man dash
에서
S is the variable-name
## remove largest prefix pattern
*/ upto the last slash
더 읽기를 들어, 검색/bin에 테스트
echo "http://www.myserver.org/very/very/long/path/mystring" | sed "s|^${variable}\(.*\)$|\1|"
/dash
$ S="http://www.myserver.org/very/very/long/path/mystring" && echo ${S##*/}
mystring
"##"좀 더 그림 :
$ S="/mystring/" ; echo ${S##*/}
$ S="/mystring" ; echo ${S##*/}
mystring
$ S="mystring" ; echo ${S##*/}
mystring
나는 sed와 함께 갔을 것이지만 원칙은 적용된다. – brice
좋은 지적으로 sed snippet도 추가되었다. – simonnordberg
변수가 확장되도록 표현식을 큰 따옴표로 묶으십시오. 예 : 'sed "| $ {shorturl} \ (. * \) $ | \ 1 |"'. 답변도 업데이트되었습니다. – simonnordberg