grep ignorando alguns resultados [RESOLVIDO]

1. grep ignorando alguns resultados [RESOLVIDO]

Rafael Figueiredo
rafaelff91

(usa Ubuntu)

Enviado em 17/01/2021 - 10:05h

Olá,

Estou com uma dúvida em relação o grep.

segue comando que estou utilizando:

egrep -i --binary-files=text "1F.+7493CASCAVEL+" files/arquivo 


Ele está ignorando alguns resultados que correspondem a regex passada e gostaria de saber o motivo.

tenho que ter 4666 correspondências e ele me retorna 4658.

se eu utilizar conforme abaixo, tudo ocorre como esperado, porém gostaria de usar a regex acima. Testei a regex em https://regexr.com/ , mas no grep não estou conseguindo.

egrep -i --binary-files=text "7493CASCAVEL" files/arquivo 






  


2. MELHOR RESPOSTA

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 17/01/2021 - 21:57h

rafaelff91 escreveu:

msoliver permaneceu na mesma.

por exemplo: essa linha abaixo não encontra no grep... no site regexr.com funciona.

1F 001354800001061PILARSKI & BOSETTO LTDA 082000092501 2062199408054712100RUA ¨JOAO ARQUELAU SOARES 762 JD.PALMEIRAS 85805120PR7493CASCAVEL 49000000000000000500000000000000000N F


e abaixo está uma linha que foi encontrada. Não consigo ver diferenças entre elas:

1F 001354930001771MARTIGNAGO & ZONTA LTDA 022000122300 2062199407013329501RUA SANDINO E DE AMORIN 1192 JD.M DE FATIMA 85807190PR7493CASCAVEL 49000000000000000152007070100000000N F

Algum problema no arquivo original?

files/K3241.K032001K.CNPJ.D01120.L00001: ASCII text, with very long lines

o comando file acusa como ASCII, porém este arquivo possui acentuação. Talvez seja isso que esteja confundindo o grep ou é apenas a forma como o file funciona ( olha a primeira linha e com base nela define o enconding?)



No 1o conjunto de teste há uma trema talvez seja por isso q esteja dando problema. O grep funciona no locale corrente do sistema.

¨JOAO

Vc pode tentar
LANG=C egrep -i --binary-files=text "1F.+7493CASCAVEL+" files/arquivo
P testar essa hipótese

3. Re: grep ignorando alguns resultados [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/01/2021 - 17:45h


rafaelff91 escreveu:

Olá,

Estou com uma dúvida em relação o grep.

segue comando que estou utilizando:

egrep -i --binary-files=text "1F.+7493CASCAVEL+" files/arquivo 


Ele está ignorando alguns resultados que correspondem a regex passada e gostaria de saber o motivo.

tenho que ter 4666 correspondências e ele me retorna 4658.

se eu utilizar conforme abaixo, tudo ocorre como esperado, porém gostaria de usar a regex acima. Testei a regex em https://regexr.com/ , mas no grep não estou conseguindo.

egrep -i --binary-files=text "7493CASCAVEL" files/arquivo 


Boa tarde Rafael.
o "+" da sua regex, é literal, ou um meta caractere?
Sendo mais objetivo, no texto tem o "+"?


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________




4. Re: grep ignorando alguns resultados

Rafael Figueiredo
rafaelff91

(usa Ubuntu)

Enviado em 17/01/2021 - 17:56h

msoliver escreveu:


rafaelff91 escreveu:

Olá,

Estou com uma dúvida em relação o grep.

segue comando que estou utilizando:

egrep -i --binary-files=text "1F.+7493CASCAVEL+" files/arquivo 


Ele está ignorando alguns resultados que correspondem a regex passada e gostaria de saber o motivo.

tenho que ter 4666 correspondências e ele me retorna 4658.

se eu utilizar conforme abaixo, tudo ocorre como esperado, porém gostaria de usar a regex acima. Testei a regex em https://regexr.com/ , mas no grep não estou conseguindo.

egrep -i --binary-files=text "7493CASCAVEL" files/arquivo 


Boa tarde Rafael.
o "+" da sua regex, é literal, ou um meta caractere?
Sendo mais objetivo, no texto tem o "+"?




é um meta caractere


5. Re: grep ignorando alguns resultados [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/01/2021 - 18:32h


1F.+ => Casa UM ou Mais caracteres depois do "F",
Para efeitos de testes, altere a regex para:
"1F.*7493CASCAVEL+"
* => casa Zero ou Mais vezes

______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________




6. Re: grep ignorando alguns resultados

Rafael Figueiredo
rafaelff91

(usa Ubuntu)

Enviado em 17/01/2021 - 20:50h

msoliver permaneceu na mesma.

por exemplo: essa linha abaixo não encontra no grep... no site regexr.com funciona.

1F 001354800001061PILARSKI & BOSETTO LTDA 082000092501 2062199408054712100RUA ¨JOAO ARQUELAU SOARES 762 JD.PALMEIRAS 85805120PR7493CASCAVEL 49000000000000000500000000000000000N F


e abaixo está uma linha que foi encontrada. Não consigo ver diferenças entre elas:

1F 001354930001771MARTIGNAGO & ZONTA LTDA 022000122300 2062199407013329501RUA SANDINO E DE AMORIN 1192 JD.M DE FATIMA 85807190PR7493CASCAVEL 49000000000000000152007070100000000N F

Algum problema no arquivo original?

files/K3241.K032001K.CNPJ.D01120.L00001: ASCII text, with very long lines

o comando file acusa como ASCII, porém este arquivo possui acentuação. Talvez seja isso que esteja confundindo o grep ou é apenas a forma como o file funciona ( olha a primeira linha e com base nela define o enconding?)




7. Re: grep ignorando alguns resultados [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/01/2021 - 22:12h


rafaelff91 escreveu:

msoliver permaneceu na mesma.

por exemplo: essa linha abaixo não encontra no grep... no site regexr.com funciona.

1F 001354800001061PILARSKI & BOSETTO LTDA 082000092501 2062199408054712100RUA ¨JOAO ARQUELAU SOARES 762 JD.PALMEIRAS 85805120PR7493CASCAVEL 49000000000000000500000000000000000N F


e abaixo está uma linha que foi encontrada. Não consigo ver diferenças entre elas:

1F 001354930001771MARTIGNAGO & ZONTA LTDA 022000122300 2062199407013329501RUA SANDINO E DE AMORIN 1192 JD.M DE FATIMA 85807190PR7493CASCAVEL 49000000000000000152007070100000000N F

Algum problema no arquivo original?

files/K3241.K032001K.CNPJ.D01120.L00001: ASCII text, with very long lines

o comando file acusa como ASCII, porém este arquivo possui acentuação.
Talvez seja isso que esteja confundindo o grep ou é apenas a forma como o file funciona ( olha a primeira linha e com base nela define o enconding?)


Não encontrei caracteres "acentuados" nas linhas acima.....

Testando aqui, as duas linhas "casaram",
No grep -E, egrep, sed e awk.

Saída do file.
file texto.txt
texto.txt: UTF-8 Unicode text, with very long lines

Esse arquivo é gerado em qual sistema?

Para casar a linha inteira, usei:
grep -E '^1F.*7493CASCAVEL.*$' texto.txt

files/K3241.K032001K.CNPJ.D01120.L00001: ASCII text, with very long lines
Essa é a saída completa do file?
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________




8. Re: grep ignorando alguns resultados [RESOLVIDO]

Rafael Figueiredo
rafaelff91

(usa Ubuntu)

Enviado em 18/01/2021 - 19:56h

leandropscardua escreveu:

rafaelff91 escreveu:

msoliver permaneceu na mesma.

por exemplo: essa linha abaixo não encontra no grep... no site regexr.com funciona.

1F 001354800001061PILARSKI & BOSETTO LTDA 082000092501 2062199408054712100RUA ¨JOAO ARQUELAU SOARES 762 JD.PALMEIRAS 85805120PR7493CASCAVEL 49000000000000000500000000000000000N F


e abaixo está uma linha que foi encontrada. Não consigo ver diferenças entre elas:

1F 001354930001771MARTIGNAGO & ZONTA LTDA 022000122300 2062199407013329501RUA SANDINO E DE AMORIN 1192 JD.M DE FATIMA 85807190PR7493CASCAVEL 49000000000000000152007070100000000N F

Algum problema no arquivo original?

files/K3241.K032001K.CNPJ.D01120.L00001: ASCII text, with very long lines

o comando file acusa como ASCII, porém este arquivo possui acentuação. Talvez seja isso que esteja confundindo o grep ou é apenas a forma como o file funciona ( olha a primeira linha e com base nela define o enconding?)



No 1o conjunto de teste há uma trema talvez seja por isso q esteja dando problema. O grep funciona no locale corrente do sistema.

¨JOAO

Vc pode tentar
LANG=C egrep -i --binary-files=text "1F.+7493CASCAVEL+" files/arquivo
P testar essa hipótese


msoliver é um arquivo de dados abertos disponibilizados pela receita federal contendo cadastros de todo o Brasil. SUa regex também deu certo, desde que eu use o LANG=C.

leandropscardua, sua dica deu certo. Muito obrigado.

Ele estava se perdendo no trema e pulando aquela linha.

Resumindo, o problema era o enconding.

deixei o comando final assim:
LANG=C egrep -i -h --binary-files=text "1F.*PR7493CASCAVEL.*F$" files/arquivo | iconv -f ISO_8859-1 -t UTF-8 -o saida.txt 


usei iconv pois caracteres acentuados estavam ilegíveis. Da forma que usei o iconv deu certo, porém alguem teria uma explicação mais aprofundada do motivo da conversão com iconv ter resolvido minha acentuação?

desde já muito obrigado!


9. Re: grep ignorando alguns resultados [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/01/2021 - 20:28h


rafaelff91 escreveu:
msoliver, é um arquivo de dados abertos disponibilizados pela receita federal contendo cadastros de todo o Brasil.
Sua regex também deu certo, desde que eu use o LANG=C.

Resumindo, o problema era o enconding.

deixei o comando final assim:
LANG=C egrep -i -h --binary-files=text "1F.*PR7493CASCAVEL.*F$" files/arquivo | iconv -f ISO_8859-1 -t UTF-8 -o saida.txt 

usei iconv pois caracteres acentuados estavam ilegíveis.
Da forma que usei o iconv deu certo, porém alguém teria uma explicação mais aprofundada do motivo da conversão com iconv ter resolvido minha acentuação?
desde já muito obrigado!

Muito estranho o "iconv" resolver o problema, sendo que, o mesmo é aplicado após o "egrep".


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________




10. Re: grep ignorando alguns resultados [RESOLVIDO]

Rafael Figueiredo
rafaelff91

(usa Ubuntu)

Enviado em 19/01/2021 - 21:56h

Pois é. Como estou iniciando fui na tentiva e erro
Se alguém tiver uma explicação mais detalhada seria legal.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts