
입력하다:
<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>
산출
<a href="foobar.sh">foobar.sh</a>
질문:"docs/2015-05-foobar/"를 어떻게 삭제하나요? 문자열은 "
답변1
echo '<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>' |\
sed 's/\(.*\)href="\(.*\)\/\(.*\)"\(.*\)/\1href="\3"\4/'
당신을 위한:
<a href="foobar.sh">foobar.sh</a>
컨텍스트가 있는 경우 sed
적절한 HTML 파서를 사용하여 항목을 찾은 <a>
다음 href
파서에서 제공하는 액세스 방법을 사용하여 찾은 요소에 액세스합니다.
이러한 \(.*\)
부분은 무엇이든 일치하며 일치하는 콘텐츠는 대기 콜백 \1
과 함께 사용될 수 있습니다. \3
추가 문자( href="
, \/
, "
)가 일치해야 합니다(슬래시는 대체 패턴의 시작과 끝을 나타내는 데에도 사용되므로 이스케이프됩니다. 일치는 탐욕적이므로 \/
두 번째 문자 앞의 마지막 슬래시는 not으로 일치됩니다). "
원하는 대로 일치하는 부분을 출력에서 제거합니다 .\2
답변2
그리고 sed
:
$ echo '<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>' |
sed -e 's,".*/\([^/]*"\),"\1,'
<a href="foobar.sh">foobar.sh</a>