リテラル文字列のAck検索[終了]


15

htmlタグの一部を検索したいときに物事をエスケープしなければならないのはうんざりです。

エスケープせずに、入力した内容を正確に検索するにはどうすればよいですか?

例えば

ack-grep 'console.log(foo'

私は得る:

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

別のシェルを使用しますか?引用符で囲みますか?検索文字列をファイルに入れると、ack-grepはファイルから文字列を取得できると思います。おそらく、stdinを介して検索することさえできます。
ゾレダチェ

@Zoredache私はより良い例を追加しました。私はエスケープする必要はありません(
テスター

あなたが不平を言っているすべての文字は、シェル(bash / zsh / whatever)によって処理されます。問題はツールとは関係ありません。問題は、シェルが入力したものを送信していないことです。
ゾレダチェ

ああ、私はそれを見つけたと思います。
テスター

回答:


18

正規表現をエスケープする必要があります。

ack 'console\.log\(foo'

.「consoleflog」に一致しないようにエスケープする必要があります。これは、.任意の1文字に一致するためです)

そうしたくない場合は、これを実行して、すべてのメタキャラクターを自動的に引用します。

ack -Q 'console.log(foo'

2
サーバー上で\ Qが機能しません。 ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
セバスチャン14

この\Q例に間違えたため、回答から削除しました。ありがとう、セバスチャン。
アンディレスター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.