Вот файл, который у меня есть http://www.zen76171.zen.co.uk/blahsomefile1
Это текстовый файл размером около 1,18 МБ
Смотря на сколько совпадающих строк я получаю
С -P
C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l
72383
Без -P
C:\blah>grep "[^J]*J" blahsomefile1 | wc -l
51814
Не должно быть разницы, -P или без -P, но есть. -P слишком много соответствует.
В этом тесте я должен получить ту же цифру, потому что я говорю список каждой строки, которая соответствует xyz, и в этом выходном списке каждая строка, которая соответствует xyz. Работает без -P.
Без -Р ничего смешного не происходит.
C:\blah>grep "[^J]*J" blahsomefile1 | wc -l
51814
C:\blah>grep "[^J]*J" blahsomefile1 | grep "[^J]*J" | wc -l
51814
С -P происходит то, что не должно происходить ..
C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l
72383
C:\blah>grep -P "[^J]*J" blahsomefile1 | grep -P "[^J]*J" | wc -l
72229
Если я сделаю grep -P "[^J]*J" blahsomefile1 | more
Я вижу, что это соответствует вещам, которые не должны совпадать, например, строка, которая читает txxxraabcAA
которая не содержит J.
txxxJbmmabcraabc
txxxraabcAA
txxxJxmmabcHaabc
Компьютер работает GNU Gnuwin32
C:\blah>where grep
C:\Program Files (x86)\GnuWin32\bin\grep.exe
версия 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>
ОБНОВИТЬ
Интересно, что Cygwin гораздо позже .. и не имеет ошибки
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 все еще на 2.5.4, очень старая версия.
Файл примечаний также доступен с сайта wetransfer и загружается с сайта ge.tt, например, с помощью firefox.