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/

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'

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.