$や '?などの正規表現メタ文字を含む文字列を見つける方法は?

$や '?などの正規表現メタ文字を含む文字列を見つける方法は?

現在のディレクトリと下のすべてのファイルから部分文字列を検索したいと思います$form['#node']。だから最初は次のことを試しました。

grep -R "\$form\[\\\\'" .そしてgrep -R "\$form\[\'" .

しかし、結果は返されません。しかし、

grep -R "\$form\["$form['#id']ファイルにまたは同じアイテムのインスタンスがあるため、多数の結果が返されます。$form['#node']エスケープされた一重引用符を追加すると問題が発生しますか?この場合、一重引用符をエスケープする方法の明確な指示が見つからないようです。

この場合、エスケープ文字が期待どおりに機能していることを確認する必要があります。

ベストアンサー1

私の考えには、そのスイッチを使用して固定文字列を見つけるように-F指示するようです。grep

$ grep -F "\$form['#node']" file.txt

はい

サンプルファイル。

$ cat file.txt
$form['#node']
abc$form['#node']abc
123$form['#node']123
blah blah $form['#node']
someotherstring

サンプルの実行。

$ grep -F "\$form['#node']" file.txt 
$form['#node']
abc$form['#node']abc
123$form['#node']123
blah blah $form['#node']

メモ:$文字列を囲む二重引用符は弱く、Bashシェルがそれを変数名として考えることを妨げないため、ドル記号をエスケープする必要があります。

おすすめ記事