如何对包含 $ 和 ' 等正则表达式元字符的字符串进行 grep?

njp*_*njp 4 shell grep quoting

我想在当前目录和下面的所有文件中搜索 substring $form['#node']。所以,我最初尝试过:

grep -R "\$form\[\\\\'" .grep -R "\$form\[\'" .

但它没有返回任何结果。然而,

grep -R "\$form\["返回大量结果,因为文件中存在诸如$form['#id']或之类的条目实例$form['#node']。是否有任何原因为什么添加转义单引号会导致问题?在这种情况下,我似乎找不到任何明确说明如何转义单引号。

我需要检查我的转义字符在这种情况下是否按预期工作。

slm*_*slm 6

我想如果你使用 swtich-F你会指示grep寻找固定的字符串。

$ grep -F "\$form['#node']" file.txt
Run Code Online (Sandbox Code Playgroud)

例子

示例文件。

$ cat file.txt
$form['#node']
abc$form['#node']abc
123$form['#node']123
blah blah $form['#node']
someotherstring
Run Code Online (Sandbox Code Playgroud)

样品运行。

$ grep -F "\$form['#node']" file.txt 
$form['#node']
abc$form['#node']abc
123$form['#node']123
blah blah $form['#node']
Run Code Online (Sandbox Code Playgroud)

注意:您仍然需要对美元符号进行转义,$因为包裹字符串的双引号很弱,并且不会防止 shell、Bash 认为这是一个变量名。