Değişmez dizeler için ack araması [kapalı]


15

Bir html etiketinin bir bölümünü aramak istediğimde bir şeylerden kaçmaktan bıktım.

Bir şeylerden kaçmak zorunda kalmadan tam olarak yazdıklarımı nasıl arayabilirim ?

Örneğin

ack-grep 'console.log(foo'

Alırım:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/

Farklı bir kabuk mu kullanıyorsunuz? Tırnak içine koymak? Arama dizenizi bir dosyaya yerleştirin, ack-grep'in bir dosyadan dizeyi alabileceğinden şüpheleniyorum. Hatta aramayı stdin ile bile alabilirsiniz.
Zoredache

@Zoredache Daha iyi bir örnek ekledim .. Kaçmak istemiyorum (.. ve daha iyi kabukla ne demek istiyorsun?
tester

Demek istediğim, şikayet ettiğiniz tüm karakterler kabuğunuz tarafından işlenir (bash / zsh / neyse). Sorunun araçla bir ilgisi yok. Sorun, kabuğun yazdıklarınızı göndermemesi.
Zoredache

Ah bence buldum .. -Q tam anlamıyla kullanır ..
tester

Yanıtlar:


18

Normal ifadeden kaçmalısın.

ack 'console\.log\(foo'

( Herhangi bir tek karakterle .eşleştiği için "consoleflog" ile eşleşmeyecek şekilde kaçmalısınız .)

Ve bunu yapmak istemezseniz, bunu her meta karakteri otomatik olarak alıntılamak için yapın.

ack -Q 'console.log(foo'

2
\ Q sunucumda çalışmıyor. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien

\QÖrnek hakkında yanılmışım ve cevaptan kaldırdım. Teşekkürler @ Sébastien.
Andy Lester
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.