Curl

如何在搜尋中使用 curl 顯示完整的地址?

  • November 21, 2018

當它找到帶有“301”狀態碼的結果時,我需要使用curl顯示完整的地址。

這是我的變數。

search=$(curl -s --head -w %{http_code} https://launchpad.net/~[a-z]/+archive/pipelight -o /dev/null | sed 's#404##g') 

echo $search
301

上述方法有效,但僅在站點存在“301”狀態程式碼時才會顯示。

我想

echo $search
https://launchpad.net/~mqchael/+archive/pipelight

更新

這是我的新變數,也許可以解釋我需要什麼。這個變數將允許我在 Ubuntu o 中搜尋和安裝類似的 ppa。

ppa=$(curl https://launchpad.net/ubuntu/+ppas?name_filter=$packagename | grep '<td><a href="/~' | grep ">$packagename<" )

echo $ppa

例子:

ppa=$(curl https://launchpad.net/ubuntu/+ppas?name_filter=Pipelight | grep '<td><a href="/~' | grep ">Pipelight<" )

echo $ppa 

<td><a href="/~mqchael/+archive/pipelight">Pipelight</a></td>

這裡的問題是我無法提取mqchael(這個名字是可變的),pipelight 也只是一個例子。

這是我應用變數時的最終格式。

ppa:mqchael/pipelight

這應該做你想要的:

curl https://launchpad.net/ubuntu/+ppas?name_filter=Pipelight |  awk -F/ '/>Pipelight</{print $2}'

解釋:

-F/歸檔分隔符設置為/,並且/>Pipelight</意味著“在{}匹配的唯一行中執行命令>Pipelight<。因此,至少在您發布的範例中,帶有的行>Pipelight<是:

<td><a href="/~mqchael/+archive/pipelight">Pipelight</a></td>

因此,由於awk在 上拆分/,第一個欄位將是<td><a href=",第二個欄位將是~mqchael。這就是為什麼{print $2}會列印~mqchael.

如果您還想去掉波浪號 ( ~),請使用以下命令:

curl https://launchpad.net/ubuntu/+ppas?name_filter=Pipelight |  
   awk -F/ '/>Pipelight</{print $2}' | sed 's/~//'

引用自:https://unix.stackexchange.com/questions/120856