我想獲得最新的(第一個)下載鏈接,并與一個重合詞相匹配。
URL=https://github.com/sharkdp/bat/releases/ # Need to look at /releases/ even though the downloads are under /releases/download/$REL/$BAT
content=$(wget $URL -q -O -)
# Parse $content for string starting 'https://' and ending "_amd64.deb"
# 目前,這將是: href="/sharkdp/bat/releases/download/v0.18.3/bat_0.18.3_amd64.deb"
# wget -O 指定wget轉儲頁面內容的檔案名,然后-獲得轉儲到標準輸出。-q (quiet) 關閉wget輸出。
然后我需要以某種方式grep/匹配以https://開始,以_amd64結束的字串。然后我需要在這個串列中選擇第一個。
我如何用這種方式來grep/匹配/挑選第一項呢?
一旦我有了這個,然后我就可以很容易地在頁面上下載最新的版本,用wget -P /tmp/ $DL
uj5u.com熱心網友回復:
用Bash,你可以用
rx='href="(/sharkdp/[^"]*_amd64.deb)"
if [[ "$content" =~ $rx ]; then
echo "${BASH_REMATCH[1]}"/span>。
else
echo "No match"。
Fi
# => /sharkdp/bat/releases/download/v0.18.3/bat-musl_0.18.3_amd64.deb.
href="(/sharkdp/[^"]*_amd64.deb)"重碼匹配href=",然后捕捉到第一組(${BASH_REMATCH[1]}) /shardp/ " _amd64以外的零或多個字符。 deb,然后只匹配"。
使用 GNU grep,你可以使用
> link=$(grep -oP 'href="K/sharkdp/[^"]*_amd64. deb' <<< "$content" | head -1)
> echo "$link"。
# => /sharkdp/bat/releases/download/v0.18.3/bat-musl_0.18.3_amd64.deb
在這里,
href="K/sharkdp/[^"]*_amd64.deb- 匹配href=",然后從匹配中洗掉此文本,然后匹配/sharkdp/除"之外的任何零個或多個字符,然后_amd_64.debhead -1- 只保留第一個匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/323795.html
標籤:
