Acho que isso pode ser feito apenas com sed:
sed -n '\,http://schemas.openxmlformats.org,!s/.*\(http:.*\).*//p'
-
-ndesativa a impressão automática de texto, portanto, apenas as linhas selecionadas podem ser impressas. -
\,http://schemas.openxmlformats.org,!executa o seguinte comando apenas nas linhas que não correspondem (portanto!no final)http://schemas.openxmlformats.org. Eu usei,em vez de/como o delimitador regex aqui, portanto, o\,no início. Isso reduz a necessidade de escapar de\no padrão. - O comando
sé o mesmo que o seu, mas eu uso umppara imprimir a linha, que agora contém apenas o URL.
Estou assumindo apenas um URL por linha.
Remover a cotação extra me fornece a saída corretamente:
$ sed -n '\,http://schemas.openxmlformats.org,!s/.*\(http:.*\).*//p' inpu-file
http://www.yahoo.com/