検索時にカールで完全なアドレスを表示する方法は?

検索時にカールで完全なアドレスを表示する方法は?

完全な住所を表示する必要があります。カール、ステータスコードが「301」の結果が見つかった場合。

これは私の変数です。

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で同様の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(名前は変更可能です)。パイプライトも単なる例です。

変数を適用するときの最終形式です。

ppa:mqchael/pipelight

ベストアンサー1

これにより、目的のタスクが実行されます。

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="2番目のフィールドはになります~mqchael{print $2}それが印刷される理由です~mqchael

チルダ()も削除するには、~次のコマンドを使用します。

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

おすすめ記事