2011-12-05 18 views
10

ack-grep kullanımı ile ilgili bir sorunum var.Ack & negative lookahead verme hataları

ben bu komutu çalıştırıyorum:

ack-grep "paypal_responded(?!_at)" 

ama hata alıyorum:

bash: !_at: event not found 

Ben çeşitli yerlerde tersbölüleri ekleyerek denedim ama ack & kullanarak da yeniyim linux, lütfen bana herhangi bir talimatı olan bir acemi olarak davranın.

Şimdiden teşekkürler.

cevap

16

ack-grep 'paypal_responded(?!_at)'

Sen geçmişi gibi komutunu genişletmek bash ! yorumlamak önlemek için tek alıntı gerek deneyin.

+2

Harika şeyler. Bu onu sıraladı. Teşekkürler: o) – TobyG

+0

@TobyG Bunu bir cevap olarak kabul etmeyi düşünür müsünüz, bu soru artık cevapsız kalmayacak mı? Teşekkürler! – user1251007

+0

Özür dilerim. Bu tarihin ilk zamanlarına dayanarak burada bir cevap kabul etmediğimi fark etmedim. Şimdi bitti. – TobyG

4

kabuk komut ikamesi olarak girişteki ! yorumluyor:

$ ack-grep root /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
$ !ac 
ack-grep root /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
$ 

Sen ! özel bir anlamı vardır kabuk anlatmak gerekir;

:

ack-grep "paypal_responded(?\!_at)" 

ack-grep "paypal_responded\(?\!_at\)" 

veya

ack-grep 'paypal_responded(?!_at)' 

Tek alıntılanan dizeleri kendilerine uygulanmış az dönüşümleri vardır: Bunu yapmanın iki yolu vardır

$ ack-grep "s\!" /etc/passwd 
$ ack-grep 's!' /etc/passwd 
$ 
+0

düzenli ifadelerdeki tüm '()' ve '!' Den kaçmaktan çok daha pratiktir ... ack-grep "paypal_muaded (? \! _ At)" .. ama hata var ... " ack-grep: Geçersiz regex 'paypal_muamed (? \! _ at') ': Sıra (? \ ...) sırayla tanınmayan; TobyG

+0

Sheesh, beklediğimden çok daha fazlası var - basit örneklerim istediğim gibi çalıştı, ama" (?! _ At) "ile daha uzun olanı korkunç yollarla başarısız oluyor ve neden kendiniz sürüş yaptığınızı görmek kolay Fındık işe yarıyor. "ack-grep" paypal_muve \ (? \! _ at \) "' iyi çalışıyor .... ama açıklayamıyorum. – sarnold