Ao usar o grep em arquivos html, como posso exibir apenas o texto e não as tags?

0

Eu tenho um grande site. Em vez de configurar um mecanismo de pesquisa local, eu uso o grep para pesquisar o site. A saída do Grep mostra o html (claro), mas eu só quero ver o texto (e não todas as tags html).

Como posso conseguir isso?

    
por don.joey 01.01.2015 / 10:40

2 respostas

1

Uma solução que encontrei é a saída do grep para o html2text:

sudo apt-get install html2text
grep "som* interesting" | html2text

Isso funciona em grande parte, mas falha a) manter o realce de cor do grep, b) usar o unicode e c) substituir certos caracteres. Aqui está uma alternativa mais completa que não tem essas desvantagens.

grep --color=always "test*" * | html2text -utf8 | sed 's/l&rsquo/\"/'

É claro que você pode editar o stream usando sed para alterar outros elementos também.

    
por don.joey 01.01.2015 / 10:44
2

Use o comando lynx e instale-o seguindo:

sudo apt-get install lynx-cur

Veja as entradas e saídas aqui

$ lynx --dump infile.html | grep 'PATTERN'
HTML Tables

   HTML tables start with a table tag.

   Table rows start with a tr tag.

   Table data start with a td tag.
     __________________________________________________________________

1 Column:

   100
     __________________________________________________________________

1 Row and 3 Columns:

   100 200 300
     __________________________________________________________________

3 Rows and 3 Columns:

   100 200 300
   400 500 600
   700 800 900
     __________________________________________________________________

Usando :

awk '{gsub(/<[^>]*>/,"")} /PATTERN/{# what you want to do }' infile
    
por sddgob 01.01.2015 / 11:19

Tags