Confirme a pesquisa de cadeias literais [fechadas]

15

Estou cansado de ter que escapar de coisas quando quero procurar parte de uma tag html.

Como posso confirmar exatamente o que digito sem precisar escapar de nada ?

por exemplo

ack-grep 'console.log(foo'

Eu recebo:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/
testador
fonte
Use um shell diferente? Colocá-lo entre aspas? Coloque sua string de pesquisa em um arquivo, eu suspeito que o ack-grep possa obter a string de um arquivo. Talvez você possa até conseguir a pesquisa via stdin.
Zoredache
@ Zoredache eu adicionei um exemplo melhor .. Eu não quero ter que escapar (.. e o que você quer dizer com shell melhor?
Testador
Quero dizer, todos os personagens dos quais você está reclamando são tratados pelo seu shell (bash / zsh / qualquer que seja). O problema não tem nada a ver com a ferramenta. O problema é que o shell não está enviando o que você digita.
Zoredache
Ah eu acho que eu achei .. -Q usos literalmente ..
tester

Respostas:

18

Você tem que escapar da regex.

ack 'console\.log\(foo'

(Você deve escapar do .modo que não corresponde a "consoleflog", porque .corresponde a qualquer caractere único)

E se você preferir não fazer isso, faça isso para citar todos os metacaracteres automaticamente.

ack -Q 'console.log(foo'
Andy Lester
fonte
2
\ Q não funciona no meu servidor. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien
Eu estava enganado sobre o \Qexemplo e o removi da resposta. Obrigado, @ Sébastien.
Andy Lester