Suche nach wörtlichen Zeichenfolgen bestätigen [geschlossen]

15

Ich habe es satt, Dinge zu entkommen, wenn ich nach einem Teil eines HTML-Tags suchen möchte.

Wie kann ich nach genau dem suchen, was ich tippe, ohne dass ich mich dem Inhalt entziehen muss?

z.B

ack-grep 'console.log(foo'

Ich bekomme:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/
Prüfer
quelle
Verwenden Sie eine andere Shell? In Anführungszeichen setzen? Platzieren Sie Ihre Suchzeichenfolge in einer Datei. Ich vermute, ack-grep kann die Zeichenfolge aus einer Datei abrufen. Vielleicht kannst du ja mal die Suche über stdin bekommen.
Zoredache
@Zoredache Ich habe ein besseres Beispiel hinzugefügt .. Ich möchte nicht entkommen müssen (.. und was meinst du mit besserer Shell?
Tester
Ich meine, alle Chracters, über die Sie sich beschweren, werden von Ihrer Shell gehandhabt (bash / zsh / whatever). Das Problem hat nichts mit dem Tool zu tun. Das Problem ist, dass die Shell nicht sendet, was Sie eingeben.
Zoredache
Ah, ich denke, ich habe es gefunden .. -Q verwendet es wörtlich ..
Tester

Antworten:

18

Du musst dem Regex entkommen.

ack 'console\.log\(foo'

(Sie sollten das .entkoppeln, damit Sie nicht mit "consoleflog" übereinstimmen, da es .mit einem einzelnen Zeichen übereinstimmt.)

Und wenn Sie das lieber nicht tun möchten, zitieren Sie jedes Metazeichen automatisch.

ack -Q 'console.log(foo'
Andy Lester
quelle
2
\ Q funktioniert nicht auf meinem 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
Ich habe mich bei dem \QBeispiel geirrt und es aus der Antwort entfernt. Danke, @ Sébastien.
Andy Lester