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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts