Aqui está um arquivo que eu tenho link
É um arquivo de texto com tamanho de 1,18 MB
Olhando quantas linhas correspondentes recebo
com -P
C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l
72383
Sem -P
C:\blah>grep "[^J]*J" blahsomefile1 | wc -l
51814
Não deve haver diferença se -P ou sem -P, mas existe. O -P está combinando muito.
Com este teste eu deveria ter o mesmo valor, porque eu estou dizendo listar todas as linhas que combinam xyz e dentro daquela lista de saída cada linha que combina xyz. Funciona sem -P.
Sem -P nada de engraçado acontecendo.
C:\blah>grep "[^J]*J" blahsomefile1 | wc -l
51814
C:\blah>grep "[^J]*J" blahsomefile1 | grep "[^J]*J" | wc -l
51814
Com coisas -P acontecendo que não deveriam estar acontecendo ..
C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l
72383
C:\blah>grep -P "[^J]*J" blahsomefile1 | grep -P "[^J]*J" | wc -l
72229
Se eu fizer grep -P "[^J]*J" blahsomefile1 | more
Eu vejo que está correspondendo às coisas que não deveria corresponder, como a linha que lê txxxraabcAA
, que não contém J.
txxxJbmmabcraabc
txxxraabcAA
txxxJxmmabcHaabc
O computador está executando gnuwin32 grep
C:\blah>where grep
C:\Program Files (x86)\GnuWin32\bin\grep.exe
a versão do grep é 2.5.4
C:\blah>"C:\Program Files (x86)\GnuWin32\bin\grep.exe" -V
GNU grep 2.5.4
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
C:\blah>
UPDATE
Curiosamente, o do cygwin é muito mais tarde ... e não tem o bug
C:\blah\aeea2\a\a\a\a>c:\cygwin\bin\grep -P "[^J]*J" blahsomefile1 | wc -l
51814
C:\blah>c:\cygwin\bin\grep -V
/usr/bin/grep (GNU grep) 2.21
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
C:\blah>
gnuwin32 grep ainda está no 2.5.4, uma versão muito antiga.
O arquivo de notas também está disponível do wetransfer e pode ser baixado de ge.tt com, por exemplo, firefox.