echo '<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>' |\
sed 's/\(.*\)href="\(.*\)\/\(.*\)"\(.*\)/href=""/'
oferece:
<a href="foobar.sh">foobar.sh</a>
Se houver algum contexto, no entanto, nunca usarei sed , mas um analisador adequado para o HTML para encontrar a entrada <a> e, em seguida, acessar o href do elemento encontrado usando os métodos de acesso fornecidos pelo parser.
As partes \(.*\) correspondem a qualquer coisa e o que elas correspondem pode ser chamado de volta com , , etc. Os outros caracteres ( href=" , \/ , " ) precisam ser correspondidos (e a barra escapou como também é usada para denotar o início e o fim do padrão de substituição. A correspondência é gulosa, portanto o \/ corresponde à última barra antes do segundo " . Por não usar a parte de correspondência com que é descartado da saída, exatamente como você queria.