Acho que isso pode ser feito apenas com sed:
sed -n '\,http://schemas.openxmlformats.org,!s/.*\(http:.*\).*//p'
-
-n
desativa 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 ump
para 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/