shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Grep em HTML


From: Arkanon
Subject: Re: [shell-script-pt] Grep em HTML
Date: Fri, 18 Dec 2020 01:44:57 -0300

Aí, Vilmar.

Se você usar o parâmetro -P ao invés de -E, o grep trabalhará com Expressões Regulares Compatíveis com Perl (PCRE), que são "ainda mais estendidas" que as Expressões Regulares Estendidas (ERE) :-)
Um dos conceitos mais interessantes nas PCRE, na minha opinião, é o de lookaround (lookbehind e lookahead): a possibilidade de levar em conta um padrão antes/depois do que se está procurando, mas ignorando esse padrão na hora do match efetivo.

No exemplo que você passou, a ideia seria aplicada assim, por exemplo:

$ grep -oP '>\K.*\.chi\.zst(?=<)' HTML
avahi-0.8+15+ge8a3dd0-3-x86_64.chi.zst
avfs-1.1.3-1-x86_64.chi.zst


...\K indica que o grep deve procurar pela ER à sua direita levando em consideração a ER que estiver à sua esquerda
(?=...) indica o simétrico: procurar pela ER à esquerda levando em consideração a ER que estiver à direita

Se a eficiência for importante, evite o uso do parâmetro -P em favor do -E, -G (def) ou -F, em ordem crescente de preferência. Quando possível, claro.

Att,

Em sex., 18 de dez. de 2020 às 01:11, Vilmar Catafesta <vcatafesta@gmail.com> escreveu:
Olá pessoal,

Alguém disposto a ajudar com um regex para o GREP pegar de um html
o nome do arquivo entre as tags > e </a ?

Eu  poderia pegar a url do arquivo, porém, dependendo do nome do arquivo, como no exemplo
abaixo, o cURL me retorna a url do arquivo "truncado", e necessito pegar o nome do arquivo
integral para que possa criar um pacote com este nome.

O mais próximo que consegui foi com o regex abaixo:
grep -Eo '>[^"]*.chi.zst'

Exemplo de parte de html:
<a href=""            08-Dec-2020 17:26              517141
<a href=""       08-Dec-2020 17:26                 642
<a href=""                       08-Dec-2020 17:26              237986
<a href=""                  08-Dec-2020 17:26                 544

resultado:
>avahi-0.8+15+ge8a3dd0-3-x86_64.chi.zst
>avahi-0.8+15+ge8a3dd0-3-x86_64.chi.zst
>avfs-1.1.3-1-x86_64.chi.zst
>avfs-1.1.3-1-x86_64.chi.zst


outro detalhe, o regex tem que retornar somente o nome finalizado com .chi.zst
mas NÃO com .chi.zst.desc

Saudações
Vilmar




_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
(o_  @arkanon  (Twitter)     __o
//\   arkanon@lsd.org.br   _`\<,
V_/_      www.lsd.org.br  (_)/(_)
---------------------------------

reply via email to

[Prev in Thread] Current Thread [Next in Thread]