Pode haver algum problema com sed em casos especiais. Como foi sugerido em muitos lugares (por exemplo) - não usar regexps, mas um mecanismo de análise de html. Um analisador facilmente disponível está contido no texto somente navegador lynx (disponível em qualquer linux). Então você apenas extrai as urls que você quer com grep.
lynx -dump -listonly myhtmlfile.html | grep IWANTthis | sort -u
No entanto, isso não funcionará em arquivos html desconfigurados (não podem ser analisados adequadamente) ou em trechos de texto com links. Outra maneira simples é encadear. Se você tem um trecho de texto como o seu em um arquivo de texto chamado st3.txt, você pode fazer o seguinte:
grep http ./st3.txt | sed 's/http/\nhttp/g' | grep ^http | sed 's/\(^http[^ <]*\)\(.*\)//g' | grep IWANTthis | sort -u
Explicação:
grep http ./st3.txt => will catch lines with http from text file
sed 's/http/\nhttp/g' => will insert newline before each http
grep ^http => will take only lines starting with http
sed 's/\(^http[^ <]*\)\(.*\)//g'
=> will preserve string from ^http until first space or <
grep IWANTthis => will take only urls containing your text of interest
sort -u => will sort and remove duplicates from your list