, bu deneyin segfault üretir 2012 yılınıngrep -f Mac var ise
$ grep --v
grep (BSD grep) 2.5.1-FreeBSD
Bu bir makine (a rMBP Apple'ın yazılım güncellemelerine ayak uydurdum, bu yüzden 10.8.4.
Kaynaktan derlenen GNU grep
'un bu sorundan etkilenmediğini doğruladım. Nitekim, 2.5.1'in son versiyonları olan 2.14 versiyonudur.
Ancak, her giriş için bir grep soran bazı büyük ölçüde verimsiz döngü olmadan, aksi halde, bir dizi normal ifadeler karşı bir giriş sınama görevi nasıl gerçekleştirilebilir?
Düzenleme: Bu iş için uğraştığım yaklaşım: while read REGEX; do [[ ... =~ $REGEX ]] ... done < regexfile
.
Soru: Bu grep'in bu sürümü ile bilinen bir hata mı? Sistemlerimizi nasıl kurabiliriz, böylece grep’e bir regex dosyasıyla düzgün bir şekilde çalışırlar?
Güncelleme: Bazı kullanıcıların iyi çalıştığını bildiriyor gibi görünüyor (bu özel FreeBSD 2.5.1 grep ile bile). Hangi .so/.dylib'in kullanıyor olabileceğini anlamaya çalışmak için kullanabileceğim bazı adımlar nelerdir? Birisi bir shasum /usr/bin/grep
yapabilir ve bana çalışıp çalışmadığını söyleyebilir mi? (O kadar bilgi vermek istiyorum emin değilim ama ne Peşinde olduğum Bilgisayarımın yapılandırması berbat olup olmadığını, ya da bu yazılımın bu sürümü ile bazı gerçek varolan sorunu. Eğer)
$ shasum /usr/bin/grep
eac59389d09642decbb8551e2c975f795934bfbf /usr/bin/grep
$ codesign -dvvv /usr/bin/grep
Executable=/usr/bin/grep
Identifier=com.apple.zgrep
Format=Mach-O thin (x86_64)
CodeDirectory v=20100 size=224 flags=0x0(none) hashes=6+2 location=embedded
Hash type=sha1 size=20
CDHash=93b823c000188f8737653d8333c90a6db9361d70
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Info.plist=not bound
Sealed Resources=none
Internal requirements count=2 size=208
fazla araştırma: Ben de makineyi yeniden başlatıldıktan
$ gdb /usr/bin/grep
GNU gdb 6.3.50-20050815 (Apple version gdb-1824) (Thu Nov 15 10:42:43 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries .... done
(gdb) start -f grepfile
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n])
Starting program: /usr/bin/grep -f grepfile
Reading symbols for shared libraries +++.............................. done
abc
abc
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000101000000
0x00007fff89b5d1b3 in memchr()
(gdb) where
#0 0x00007fff89b5d1b3 in memchr()
#1 0x00007fff89b8e45a in __sfvwrite()
#2 0x00007fff89b8e861 in fwrite()
#3 0x0000000100003138 in _mh_execute_header()
#4 0x0000000100002988 in _mh_execute_header()
#5 0x0000000100001c28 in _mh_execute_header()
#6 0x00007fff8e2d57e1 in start()
(gdb)
İşte fazla bilgi olduğunu. Gdb'de tekrar tekrar aynı şeyi yapar.
Sonra Macbook Air'ımdan geçiş yaptım ve çalıştı, sonra kontrol ettim ve homebrew grep 2.14 yüklü. Grep'i ack hakkında öğrendiğimde güne tekrar test ettiğime inanıyorum. Bu bir Mac üzerinde düzgün bir grep elde etmek için başka bir yoldur, homebrew kullanın. Bu üzücü bir şeydi çünkü ilk etapta grep'i kontrol etmeden grep'i derlemek için gettext'leri elde etmek için homebrew kullanmıştım ... –
Geçmişte bulduğum şeylerin cevaplarını yeniden bulmak çok can sıkıcı bir durum. . Homebrew/dupes/grep 'demeti formülüdür. –
FWIW, örneğiniz, OS X 10.8.4 ile birlikte gelen Apple/usr/bin/grep (ayrıca 2.5.1-FreeBSD) stoğuyla benim için iyi çalışıyor. –