Ack mencari string literal [tertutup]


15

Saya muak harus melarikan diri ketika saya ingin mencari bagian dari tag html.

Bagaimana saya bisa mencari apa yang saya ketik tanpa harus melarikan diri?

misalnya

ack-grep 'console.log(foo'

Saya mendapat:

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

Gunakan shell yang berbeda? Taruh dalam tanda kutip? Tempatkan string pencarian Anda di file, saya curiga ack-grep bisa mendapatkan string dari file. Mungkin Anda bahkan bisa mendapatkan pencarian melalui stdin.
Zoredache

@Zoredache Saya menambahkan contoh yang lebih baik .. Saya tidak mau harus melarikan diri (.. dan apa yang Anda maksud dengan shell yang lebih baik?
tester

Maksud saya semua chracters yang Anda keluhkan ditangani oleh shell Anda (bash / zsh / apa pun). Masalahnya tidak ada hubungannya dengan alat. Masalahnya adalah bahwa shell tidak mengirimkan apa yang Anda ketik.
Zoredache

Ah saya pikir saya menemukannya .. -Q menggunakannya secara harfiah ..
tester

Jawaban:


18

Anda harus melarikan diri dari regex.

ack 'console\.log\(foo'

(Anda harus melarikan diri .sehingga Anda tidak cocok dengan "consoleflog", karena .cocok dengan karakter tunggal mana pun)

Dan jika Anda lebih suka tidak melakukannya, lakukan ini untuk mengutip setiap metacharacter secara otomatis.

ack -Q 'console.log(foo'

2
\ Q tidak berfungsi di server saya. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien

Saya keliru tentang \Qcontoh dan telah menghapusnya dari jawaban. Terima kasih, @ Sébastien.
Andy Lester
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.