带有特殊符号的 Grep 词

Cyr*_*ril 5 linux grep special-characters

我如何 grep 这个?(包括特殊字符)

"Limit reached."[\n]"
Run Code Online (Sandbox Code Playgroud)

我尝试反斜杠特殊符号,但最终不起作用,如下所示:

grep '\"Limit reached\.\"\[\\n\]\" '
Run Code Online (Sandbox Code Playgroud)

我也尝试了其他技术,但也没有奏效。您可以建议/建议任何其他语法吗?

小智 11

在 grep 中使用 -F

$ cat test.txt
"Limit reached."[\n]"
test
"Limit reached."[\n]"

$ grep -F '"Limit reached."[\n]"' test.txt
"Limit reached."[\n]"
"Limit reached."[\n]"
Run Code Online (Sandbox Code Playgroud)

根据手册页,

   -F, --fixed-strings, --fixed-regexp
          Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.  (-F is specified by> POSIX,
 --fixed-regexp is an obsoleted alias, please do not use it new scripts.)
Run Code Online (Sandbox Code Playgroud)


ctr*_*lor 5

你非常接近。

您不需要 excape ",并且不能在单引号中使用 shell-escape 。因此,所有转义都是针对 grep 的,而不是针对 shell 的。(单引号注意事项:单引号没有解释。如果你需要在单引号字符串中放置单引号,那么你必须从单引号中取出,例如'don'\''t'

测试

printf "%s" '"Limit reached."[\n]"' | grep  '"Limit reached\."\[\\n\]"'
Run Code Online (Sandbox Code Playgroud)