Ack cerca stringhe letterali [chiuso]


15

Sono stufo di dover sfuggire alle cose quando voglio cercare parte di un tag html.

Come posso cercare esattamente quello che scrivo senza dover sfuggire alle cose?

per esempio

ack-grep 'console.log(foo'

Ottengo:

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

Usa una shell diversa? Metterlo tra virgolette? Inserisci la tua stringa di ricerca in un file, sospetto che ack-grep possa ottenere la stringa da un file. Forse puoi persino ottenere la ricerca tramite stdin.
Zoredache,

@Zoredache Ho aggiunto un esempio migliore .. Non voglio scappare (.. e cosa intendi con shell migliore?
tester

Voglio dire, tutti i personaggi di cui ti lamenti sono gestiti dalla tua shell (bash / zsh / qualunque cosa). Il problema non ha nulla a che fare con lo strumento. Il problema è che la shell non sta inviando ciò che si digita.
Zoredache

Ah penso di averlo trovato .. -Q lo usa letteralmente ..
tester

Risposte:


18

Devi scappare dalla regex.

ack 'console\.log\(foo'

(Dovresti sfuggire a in .modo da non corrispondere a "consoleflog", perché .corrisponde a qualsiasi singolo carattere)

E se preferisci non farlo, fallo per citare automaticamente ogni metacarattere.

ack -Q 'console.log(foo'

2
\ Q non funziona sul mio server. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien,

Mi sono sbagliato \Qsull'esempio e l'ho rimosso dalla risposta. Grazie, @ Sébastien.
Andy Lester,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.