>
tl;dr :

4 시간 동안 노력한 후에는 시작했을 때보 다 더 가까이 있지 않습니다.

.html 를 추가하려고합니다  많은 html 문서에서 모든 링크의 끝에 (다른 확장자가없는). 내가하려는 목표의 예는 아래의두 개의 예제 링크 ...를 참조하십시오.

메인 게시물 :

HTML 파일 모음이 많고 링크를 '수정'하여 내부 링크로 만들어서 오프라인에서 잘 작동하도록 노력하고 있습니다. (저는 언니가 시험 공부를하는 동안 오프라인으로 사이트를 사용할 수 있도록하기 위해 노력하고 있습니다). 사이트가 더 이상 온라인 상태가 아닙니다.

나는 간단한 SED 를 사용하여 그중 일부를 관리했습니다.  명령), 그러나 나는 가장 많이 붙어 있습니다.

두 가지 주요 변경 사항은 다음과 같습니다. <올>
  • 확장자가없는모든 링크의 끝에.html추가 (일부는 이미 .html이 있고 일부는 .js, .mp4 또는 변경할 필요가없는 다른 익스텐션)
  • https : //.../../../(또는 디렉토리 트리의 파일 깊이가 더 큰)로 변경
  • 두 번째 단계는 쉬울 것입니다 (maxdepth mindepth로 find를 사용하여 파일이 디렉토리 트리에 얼마나 깊이 있는지 확인한 다음 sed 's/https:\\/../../..//g'  ),하지만 https가 .html 가 필요한 링크를 쉽게 찾을 수 있다고 추측하기 때문에이 비트를 두 번째로하고 싶습니다.  그들의 끝에 추가).

    대부분의 링크는 href 태그에 있지만 전부는 아닙니다.

    나는 일종의 SED 정규식을 사용해야 할 것이라고 생각하고 있으며, 다른 링크는 다르게, 아마도 여러 번의 SED를 처리해야하기 때문입니다. 하지만 SED는 제 전문 분야가 아닙니다.

    두 개의 예제 링크 ...
    • 이 링크 :

    pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', 'https://www.example.com/learners/levels/2/lessons/13/stories/1','IF77dLwFOP',true,false,'ikd272iAGio');

    다음으로 변경해야합니다 :

    pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', ../../../www.example.com/learners/levels/2/lessons/13/stories/1.html','IF77dLwFOP',true,false,'ikd272iAGio');

    • 그리고 이것 :

    <a href="https://www.example.com/learners">Home</a> <ul>

    다음과 같아야합니다 :

    <a href="../../../www.example.com/learners.html">Home</a> <ul>

    지금까지 도착한 곳

    위에서 언급했듯이, 나는 2 단계를 어떻게할지 알고 있지만, 4 시간 동안 시도한 후에도 첫 단계를 밟지 못했습니다. 와이즈 비즈  URL 목록을 인쇄하지만 이것이 어떻게 유용한 지 알 수 없습니다. 난 그냥 grep -Poh 'https://www.example[^"]*' 를 얻는 방법을 해결할 수 없습니다   SED 를 배치  올바른 장소에서.

    어떤 힌트라도 대단히 감사하겠습니다!

    .html

    • 답변 # 1

      GNU awk 솔루션 :

      awk '{while(match($0, /["\x27]https?:\/\/([^\x27"]*)/, a))$0=substr($0,0,RSTART) "../../../" a[1] (a[1]~"\\.[[:alnum:]]{1,5}$"? "" : ".html") substr($0,RSTART+RLENGTH)}1'
      
      

      분리 된 줄에 넣습니다 :

      awk '{
          while(match($0, /["\x27]https?:\/\/([^\x27"]*)/, a))  # while there are still url to replace
              $0=substr($0,0,RSTART) "../../../" a[1] (a[1]~"\\.[[:alnum:]]{1,5}$"? "" : ".html") substr($0,RSTART+RLENGTH) }
          1' file  # 1 for print $0
      
      

      예 :

      $ cat file
      pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', 'https://www.example.com/learners/levels/2/lessons/13/stories/1','IF77dLwFOP',true,false,'ikd272iAGio');
      <a href="https://www.example.com/learners">Home</a>              <ul>
      <a href="http://www2.example.com/learner2.html">Home</a>              <ul>
      <a href="http://www3.example.com/learner3.html">Home</a><br><br><a href="https://www4.example.com/xhtml">Home</a>
      whaeverwhatever
      $ awk '{while(match($0, /["\x27]https?:\/\/([^\x27"]*)/, a))$0=substr($0,0,RSTART) "../../../" a[1] (a[1]~"\\.[[:alnum:]]{1,5}$"? "" : ".html") substr($0,RSTART+RLENGTH)}1' file
      pagespeed.addInstrumentationInit('/mod_pagespeed_beacon', 'beforeunload', '', '../../../www.example.com/learners/levels/2/lessons/13/stories/1.html','IF77dLwFOP',true,false,'ikd272iAGio');
      <a href="../../../www.example.com/learners.html">Home</a>              <ul>
      <a href="../../../www2.example.com/learner2.html">Home</a>              <ul>
      <a href="../../../www3.example.com/learner3.html">Home</a><br><br><a href="../../../www4.example.com/xhtml.html">Home</a>
      whaeverwhatever
      
      

  • 이전 python - 스파 스 텐서가있는 while_loop의 InvalidArgumentError
  • 다음 mysql - 루비 온 레일즈 - 관련 테이블 레코드 수별 순서