Ack tìm kiếm chuỗi ký tự [đã đóng]


15

Tôi phát ốm vì phải trốn tránh mọi thứ khi tôi muốn tìm kiếm một phần của thẻ html.

Làm thế nào tôi có thể ack tìm kiếm chính xác những gì tôi gõ mà không phải thoát khỏi công cụ?

ví dụ

ack-grep 'console.log(foo'

Tôi có:

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

Dùng vỏ khác? Đặt nó trong dấu ngoặc kép? Đặt chuỗi tìm kiếm của bạn vào một tệp, tôi nghi ngờ ack-grep có thể lấy chuỗi từ một tệp. Có lẽ bạn thậm chí có thể có được tìm kiếm thông qua stdin.
Zoredache

@Zoredache Tôi đã thêm một ví dụ tốt hơn .. Tôi không muốn phải trốn thoát (.. và ý bạn là gì bởi vỏ tốt hơn?
người kiểm tra

Ý tôi là tất cả các phần mềm thu hút bạn đang phàn nàn đều được xử lý bởi shell của bạn (bash / zsh / bất cứ thứ gì). Vấn đề không có gì để làm với công cụ. Vấn đề là shell không gửi những gì bạn gõ.
Zoredache

Ah tôi nghĩ rằng tôi đã tìm thấy nó .. -Q sử dụng nó theo nghĩa đen ..
người kiểm tra

Câu trả lời:


18

Bạn phải thoát khỏi regex.

ack 'console\.log\(foo'

(Bạn nên thoát .để không khớp với "consoleflog", vì .khớp với bất kỳ ký tự đơn nào)

Và nếu bạn không muốn làm điều đó, hãy làm điều này để trích dẫn mọi metacharacter tự động.

ack -Q 'console.log(foo'

2
\ Q không hoạt động trên máy chủ của tôi. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien

Tôi đã nhầm về \Qví dụ và đã loại bỏ nó khỏi câu trả lời. Cảm ơn, @ Sébastien.
Andy Lester
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.