Curl
如何在搜尋中使用 curl 顯示完整的地址?
當它找到帶有“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/~//'