Ini adalah file yang saya miliki http://www.zen76171.zen.co.uk/blahsomefile1
Ini adalah file teks berukuran sekitar 1,18MB
Melihat berapa banyak garis yang cocok saya dapatkan
Dengan -P
C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l
72383
Tanpa -P
C:\blah>grep "[^J]*J" blahsomefile1 | wc -l
51814
Seharusnya tidak ada perbedaan apakah -P atau tanpa -P, tetapi ada. -P terlalu banyak cocok.
Dengan tes ini saya harus mendapatkan angka yang sama karena saya katakan daftar setiap baris yang cocok dengan xyz dan dalam daftar output setiap baris yang cocok dengan xyz. Ini bekerja tanpa -P.
Tanpa -P tidak ada yang lucu terjadi.
C:\blah>grep "[^J]*J" blahsomefile1 | wc -l
51814
C:\blah>grep "[^J]*J" blahsomefile1 | grep "[^J]*J" | wc -l
51814
Dengan -P hal-hal terjadi yang seharusnya tidak terjadi ..
C:\blah>grep -P "[^J]*J" blahsomefile1 | wc -l
72383
C:\blah>grep -P "[^J]*J" blahsomefile1 | grep -P "[^J]*J" | wc -l
72229
Jika aku melakukan grep -P "[^J]*J" blahsomefile1 | more
Saya melihat itu cocok dengan hal-hal yang seharusnya tidak cocok, seperti baris yang berbunyi txxxraabcAA
yang tidak mengandung J.
txxxJbmmabcraabc
txxxraabcAA
txxxJxmmabcHaabc
Komputer menjalankan gnuwin32 grep
C:\blah>where grep
C:\Program Files (x86)\GnuWin32\bin\grep.exe
versi grep adalah 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>
MEMPERBARUI
Yang menarik adalah cygwin jauh lebih lambat .. dan tidak memiliki 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 masih di 2.5.4, versi yang sangat lama.
Catatan- file juga tersedia dari wetransfer dan dapat diunduh dari ge.tt dengan eg firefox.
Jawaban:
Ini mungkin bug di grep 2.5.4
Jika Anda memiliki pilihan antara gnuwin32 grep atau cygwin grep, cygwin grep jauh lebih mutakhir.
-V menunjukkan versi dan tahun, dan pada saat penulisan -
gnuwin32 grep adalah versi
2.5.4
yang 2009. Tahun di belakang.cygwin grep adalah tahun di depan gnuwin32 grep.
2.21
(itu lebih dari 2.5.4 karena 2.21 tidak seperti satu nomor aritmatika dengan titik desimal) dan tahun grep cygwin adalah 2014.Lihat tidak ada kesalahan di sana dengan cygwin grep yang 2014.
Ini bukan pertama kalinya saya bertemu bug di grep versi gnuwin32 ketika grep versi cygwin jauh lebih baik dan lebih baik. gnuwin32 tampaknya sangat ketinggalan zaman dibandingkan dengan alternatif.
sumber