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
2
A
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
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