Como truncar um link HTML?

1

ENTRADA:

<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>

OUTPUT

<a href="foobar.sh">foobar.sh</a>

Pergunta: Como posso remover o documento "docs / 2015-05-foobar /"? A string pode variar entre os "'s

    
por LoukiosValentine79 16.06.2015 / 21:04

2 respostas

2

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.

    
por 16.06.2015 / 21:27
1

com sed :

$ echo '<a href="docs/2015-05-foobar/foobar.sh">foobar.sh</a>' |
  sed -e 's,".*/\([^/]*"\),",'
<a href="foobar.sh">foobar.sh</a>
    
por 16.06.2015 / 21:32

Tags