Como excluir texto depois de um marcador

0

Eu tenho um pedaço de código html E eu tento extrair o primeiro parágrafo.

html é assim:

<p>
    Hi. Lorem Ipsum<br />
    dolor si amet […]
</p>
<p>…</p>
<p>…</p>

Primeiro, usei sed 's/<\/p>*/<\/p>' , mas parece que não funciona: não faz nada

Alguma ideia?

    
por user5510913 04.11.2015 / 17:32

1 resposta

1

Isso deve funcionar bem. Ele usa manipulação de string, não expressões regulares. Ele também deve lidar com o caso em que as tags P de abertura e fechamento estão na mesma linha.

awk '
  !in_p && idx = index($0,"<p>") {
    in_p = 1
    $0 = substr($0,idx+4)
  }
  in_p && idx = index($0, "</p>") {
    seen_close = 1
    $0 = substr($0,0,idx-1)
  }
  in_p {print}
  seen_close {exit}
' file.html

Não funcionará como esperado se você tiver parágrafos aninhados como

<p>
    Hi. Lorem Ipsum<br />
    dolor si amet […]
    <p>
        …
    </p>
</p>
<p>2nd paragraph</p>

O XML / HTML é realmente difícil de analisar manualmente: use um analisador de HTML.

    
por 05.11.2015 / 22:23