HTML 링크를 자르는 방법은 무엇입니까?

HTML 링크를 자르는 방법은 무엇입니까?

입력하다:

<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>

관련 정보