PDF 파일이 여러 개 있는 경우에도 wget을 얻으려면 이미 다운로드한 index.html에서 pdf 파일을 추출하세요.

PDF 파일이 여러 개 있는 경우에도 wget을 얻으려면 이미 다운로드한 index.html에서 pdf 파일을 추출하세요.

index.htmlPDF 파일에 대한 href 링크가 포함된 파일이 있습니다 .

내가 할 때 grep -i 'href=' index.html, 나는 예를 들어 다음과 같은 결과를 얻습니다:

<p>Télécharger : <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé-C1_L1.pdf"><span style="color: #0000ff;">Cours n°1</span></a> (S. Henrot-Versillé), <span style="color: #0000ff;"><a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé_C1_L2.pdf">Cours n°2</a></span> (S. Henrot-Versillé), <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Henrot-Versillé_C3.pdf"><span style="color: #0000ff;">Cours n°3</span></a> (S. Henrot-Versillé)</p>
<p>Télécharger le cours sur <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_L1_Bayesian.pdf">la méthode bayésienne</a> (M. Martinelli) et <a href="https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_TD_Bayesian.pdf">son TD</a> (M. Martinelli).</p></div>
<p><a href="https://github.com/mhuertascompany/EDE19" title="GitHub Deep Learning 2019 EDE">https://github.com/mhuertascompany/EDE19</a></p>
<p><a href="https://colab.research.google.com/drive" title="TDs Deep Learning 2019">https://colab.research.google.com/drive</a></p></div>
        <a href="https://www.facebook.com/euclid.france" class="icon">
        <a href="https://twitter.com/Euclid_FR" class="icon">
        <a href="#" class="icon">
        <a href="https://ecole-euclid.cnrs.fr/feed/" class="icon">

이제 같은 줄에 여러 개의 PDF 링크가 있더라도 PDF 파일의 전체 href를 모두 추출하기 위해 gsed(MacOS Catalina의 경우)를 통해 grep의 출력을 파이프하고 싶습니다.

나는 처음으로 시도했다:

grep -i 'href=' index.html | gsed 's/href="\(.*pdf\)"/\1/g'

그러나 이것은 작동하지 않습니다. 보시다시피 동일한 링크에 있는 모든 PDF 링크가 아닌 첫 번째 PDF 링크만 인쇄합니다. 따라서 모든 패턴 일치를 어떻게 인쇄합니까?

목표는 이 이후 index.html파일에 있는 모든 PDF 파일을 다운로드하는 것입니다.

어떤 도움이라도 좋을 것입니다.

답변1

이제 GNU sed가 있으므로 GNU awk를 설치할 수 있습니다. 다중 문자 RS 및 RT에 GNU awk 사용:

$ awk -v RS='href="http[^"]+.pdf"' -F'"' 'RT{$0=RT; print $2}' file
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé-C1_L1.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé_C1_L2.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Henrot-Versillé_C3.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_L1_Bayesian.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_TD_Bayesian.pdf

그렇지 않으면 모든 UNIX 시스템의 모든 쉘에서 awk를 사용하십시오.

$ awk '{
    while ( match($0,/href="http[^"]+.pdf"/) ) {
        split(substr($0,RSTART,RLENGTH),f,/"/)
        print f[2]
        $0 = substr($0,RSTART+RLENGTH)
    }
}' file
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé-C1_L1.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2019_Henrot-Versillé_C1_L2.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Henrot-Versillé_C3.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_L1_Bayesian.pdf
https://ecole-euclid.cnrs.fr/wp-content/uploads/EDE2018_Martinelli_C2_TD_Bayesian.pdf

이 출력을 로 파이프하면 xargs -n 1 curl -OPDF가 다운로드됩니다(URL에 공백이 없다고 가정).

관련 정보