ページ上のリンクを検索するbashスクリプトを作成しています。ページからソースコードをダウンロードし、その中のリンクを見つけます。ㅏタグを付けて配列に保存します。$link。ただし、問題は、一部のリンクには完全なURLが含まれておらず、サブページまたはファイルのみが含まれることです。ページのソースコードが次のとおりです。
<h1>Julian's crappy webpage</h1>
<a href="http://one.com">Page One</a>
<a href="https://two.com">Page Two</a>
<a href="/three">Page Three</a>
<a href="four">Page Four</a>
リンクが見つかると、配列は次のようになります。
http://one.com
https://two.com
/three
four
私も変数があります$urlこれは ' のような有効な URL です。https://google.com」
すべてのアイテムを作成する方法が必要です。$linkプロジェクトによって異なることをすることが効果的です。各項目について$link:
- エントリが/で始まる場合は、次のものをマージします。$url+${リンク[n]}
- エントリが「/」、「https://」、または「http://」で始まらない場合は、次のものを組み合わせてください。$url+"/"+${リンク[n]}
たとえば、上記の期待される応答は次のとおりです。
http://one.com
https://two.com
https://google.com/three
https://google.com/four
ベストアンサー1
これを達成するために使用できるサンプルスクリプトは次のとおりです。
#!/bin/bash
shopt -s extglob
readonly URL="https://google.com"
links=($(grep -o -P '(?<=href=").*(?=")' source.html)) # read into array
for ((i=0; i<${#links[@]}; i++))
do
case ${links[$i]} in
http*)
: # do nothing
;;
/*)
links[$i]="$URL"${links[$i]}; # update array
;;
*)
links[$i]="$URL/"${links[$i]}; # update array
;;
esac
done
source.html
現在ディレクトリにあるWebページのダウンロードソースと見なされます。