Ack szukaj dosłownych ciągów znaków [zamknięte]


15

Mam dość ucieczki, gdy chcę wyszukać część tagu HTML.

Jak mogę wyszukać dokładnie to, co wpisuję, bez konieczności ucieczki?

na przykład

ack-grep 'console.log(foo'

Dostaję:

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

Używasz innej powłoki? Umieścić w cudzysłowie? Umieść szukany ciąg w pliku, podejrzewam, że ack-grep może pobrać ciąg z pliku. Być może możesz nawet wyszukać za pomocą standardowego wejścia.
Zoredache

@Zoredache Dodałem lepszy przykład .. Nie chcę uciekać (.. a co rozumiesz przez lepszą powłokę?
tester

Mam na myśli, że wszystkie znaki, na które narzekasz, są obsługiwane przez twoją powłokę (bash / zsh / cokolwiek). Problem nie ma nic wspólnego z narzędziem. Problem polega na tym, że powłoka nie wysyła tego, co piszesz.
Zoredache

Ach, myślę, że go znalazłem .. -Q używa go dosłownie ..
tester

Odpowiedzi:


18

Musisz uciec od wyrażenia regularnego.

ack 'console\.log\(foo'

(Powinieneś uciec przed ., aby nie pasować do „Consoleflog”, ponieważ .pasuje do dowolnego pojedynczego znaku)

A jeśli wolisz tego nie robić, zrób to, aby automatycznie cytować każdy metaznak.

ack -Q 'console.log(foo'

2
\ Q nie działa na moim serwerze. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien

Myliłem się co do \Qprzykładu i usunąłem go z odpowiedzi. Dzięki, @ Sébastien.
Andy Lester
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.