2016-03-28 24 views
2

java dosyaları içeren bir dizinde SQLException için tüm catch deyimlerini bulmak için grep komutunda aşağıdaki regex yazdım. . Hata Bu regex RegExr.com üzerinde iyi çalışıyor bu regex ile sorun nedirGrep regex içinde hata

+0

Ditto, grep kullandığınızda -P eklemek iyi bir fikirdir, Perl regexp güçlüdür. Kaçan karakterleri değiştirmek için ASCII hex kodunu kullanmanızı öneririm. örneğin: \ x28 için (, \ x29 for). Daha az sezgisel olsa da, aynı zamanda daha az sorunlu. – POW

cevap

1

(Perl düzenli ifade sağlamak için) Eğer -P seçeneği belirtmeniz gerekir, \s kullanın:

grep -P 'catch\s{0,}\(\s{0,}SQLException' 

BTW, bunun yerine {0,} ait * kullanabilirsiniz.

1

varsayılan olarak grep kullanır BRE ve \( olur:

catch\s{0,}\(s{0,}SQLException 

o "Eşsiz (ya da (grep" veriyor.? bir yakalanan grubun başlar (( çıkış kullanılmayan anlamıyla alınır)

Sen genişletilmiş düzenli ifade modu -E ile bu grep kullanabilirsiniz.

grep -E 'catch[[:blank:]]*\([[:blank:]]*SQLException' file.log 
+0

Evet, boşluk, bir kelimenin kopyalanması/yapıştırılması nedeniyle geldi. Şimdi sabit, teşekkürler. – anubhava