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

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

Re: [shell-script] Script com Regex


From: phfbettega
Subject: Re: [shell-script] Script com Regex
Date: Mon, 23 Oct 2017 18:27:12 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

Agora que eu vi tua resposta pro email do Mestre Júlio.
"Resumindo:

Os dois pontos (:) separam o capítulo dos versículos;
O hífen (-) indica uma sequência contínua de capítulos ou de versículos;
A vírgula (,) indica uma seqüência não contínua de versículos;
O ponto-e-vírgula (;) indica um novo capítulo do mesmo livro ou de outro livro caso 
seguido de nova abreviação."

Levando em conta essa explicação e a linha de entrada que vc postou, essa ER 
funciona.
Não sei se funciona no teste.txt :)

grep -Eo '([A-Z]|[0-9]+ +[A-Z])[a-z]+\.? +[0-9:, -]+' <<<'Col. 13:14-16; 1 Cor. 15:45; Matt. 28:19; John 14:9-10, 16-17, 20, 23; Col. 13:14-16; 1 Cor. 15:45; Matt. 1:16, 21, 23; Col. 1:15; Acts 1:8; John 15:26; Gal. 3:13; 1 Pet. 2:24'
Col. 13:14-16
1 Cor. 15:45
Matt. 28:19
John 14:9-10, 16-17, 20, 23
Col. 13:14-16
1 Cor. 15:45
Matt. 1:16, 21, 23
Col. 1:15
Acts 1:8
John 15:26
Gal. 3:13
1 Pet. 2:24

Abraços Paulo

On 23-10-2017 11:45, Michel address@hidden [shell-script] wrote:
Ola Paulo, muito obrigado pela resposta.

Funcionou muito bem, apenas para tirar o ; da frente dos livros fiz:

cat teste.txt|grep -Eo '[ ;{(]?([A-Z0-9]{0,3} *)?[1-3]? ?([A-Z](\.|[[:lower:]]+\.?)) +(( *; *)?([0-9]+:[0-9]+[abc]?( *[-,] *[0-9]+[abc]?)*))+'|sed 's/\;//'

mas... tem como colocar tudo no Grep sem usar o SED

Abrs



Att,

Michel I. Moreira
echo 
"38498623798315430116174552327142800912294602133407093483096115302909743809121251297856778P"|dc

Em 23 de outubro de 2017 10:51, address@hidden <mailto:address@hidden> [shell-script] <address@hidden <mailto:address@hidden>> escreveu:

    __

    Olá Michel, o grep com a opção -E casou tudo depois de algumas alterações.
    [a-zà-ÿ] por [[:lower:]]
    \d por [0-9]
    [\-,] por [-,] (dentro da lista todo mundo é igual, ou quase :) )

    grep -Eo '[ ;{(]?([A-Z0-9]{0,3} *)?[1-3]? ?([A-Z](\.|[[:lower:]]+\.?)) +(( 
*; *)?([0-9]+:[0-9]+[abc]?( *[-,]
    *[0-9]+[abc]?)*))+' <<<'Col. 13:14-16; 1 Cor. 15:45; Matt. 28:19; John 
14:9-10, 16-17, 20, 23; Col. 13:14-16;
    1 Cor. 15:45; Matt. 1:16, 21, 23; Col. 1:15; Acts 1:8; John 15:26; Gal. 
3:13; 1 Pet. 2:24'
    Col. 13:14-16
    ; 1 Cor. 15:45
    ; Matt. 28:19
    ; John 14:9-10, 16-17, 20, 23
    ; Col. 13:14-16
    ; 1 Cor. 15:45
    ; Matt. 1:16, 21, 23
    ; Col. 1:15
    ; Acts 1:8
    ; John 15:26
    ; Gal. 3:13
    ; 1 Pet. 2:24

    Abraços Paulo

    On 23-10-2017 09:20, Michel address@hidden <mailto:address@hidden> 
[shell-script] wrote:
    > bom dia a todos,
> > Eu e um amigo estamos desenvolvendo um script que pega referencias bibicas de arquivos texto. O script > funciona parcialmente, pois esta acontecendo algo muito estranho. Vejam: > > *RegExp. Pattern:* > > [ ;{(]?([A-Z0-9]{0,3} *)?[1-3]? ?([A-Z](\.|[a-zà-ÿ]+\.?)) +(( *; *)?(\d+:\d+[abc]?( *[\-,] *\d+[abc]?)*))+ > > > *Test String: * > > Col. 13:14-16; 1 Cor. 15:45; Matt. 28:19; John 14:9-10, 16-17, 20, 23; Col. 13:14-16; 1 Cor. 15:45; Matt. > 1:16, 21, 23; Col. 1:15; Acts 1:8; John 15:26; Gal. 3:13; 1 Pet. 2:24 > > Há 2 ocorrências da referencia "1 Cor. 15:45" no test string. > > a 2a ocorrência de "1 Cor. 15:45"  o  "1 " não eh reconhecido..  pega apenas a partir de "Cor." pra frente.
    > Porem a 1ra ocorrência, pega tudo !
> > E isso acontece em outros lugares tbm. > > Grato por qq ajuda, pois já gastamos alguns neurônios nisso e não encontramos solução. > > Também é muito bem vindo alguma melhoria nessa Regex, pois não somos especialistas no assunto, apenas lemos o > livro do Aurélio, do Júlio e umas pesquisadas no Google. > > Forte Abraço > > MiShell ;-) > > echo "38498623798315430116174552327142800912294602133407093483096115302909743809121251297856778P"|dc > >
    
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
    
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>>

     > Livre de vírus. www.avg.com <http://www.avg.com>
     >
    
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
    
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>>.
     >
     > <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
     >
     >



<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Livre de vírus. www.avg.com <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>.

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


--------------------------------------------------------------------------------------------------------------
Enviado por: Michel <address@hidden>
--------------------------------------------------------------------------------------------------------------
Responder através da web


reply via email to

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