Linux grep 字符串搜索

Linux grep String Search

我要搜索

$GLOBALS["\x616\x756\x61"] 使用 grep 但 "/ 无法正常工作。

grep -rl "$GLOBALS["\x616\x756\x61"]" <filename>

$GLOBALS["\x616\x756\x61"]是病毒恶意软件起始代码,大量文件受到影响。我有一个脚本,我想搜索受影响的文件并删除第一行

由于您正在寻找完全匹配并且您不希望表达式被 grep 解释,因此您必须使用 -F 和单引号来避免变量被扩展:

grep -Frl '$GLOBALS["\x616\x756\x61"]' <filename>
      ^   ^                                ^

来自man grep

-F, --fixed-strings

Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. (-F is specified by POSIX.)


查看 -F 与单引号一起使用的另一个示例:

我们创建一个这样的文件:

$ cat a
hello
${myarray[0]}
bye

还有一个数组:

$ myarray=('hello' 'how' 'are' 'you')

让我们使用单引号并查找值:

$ grep '${myarray[0]}' a
$ 

让我们使用带双引号的固定字符串 -> 它会被解释!

$ grep -F "${myarray[0]}" a
hello

让我们使用 -F 和单引号:

$ grep -F '${myarray[0]}' a
${myarray[0]}                    #this works!