使用Grep命令搜索包含反斜杠的字符串

时间:2019-02-01 04:46:55

标签: grep

在尾部输出中,我有以下字符串...使用grep命令,如何搜索字符串"contentState\":\"STOPPED\"。我必须搜索整个字符串"contentState\":\"STOPPED\"而不是  比仅搜索STO P PED或contentState

我尝试了以下命令:但是它不起作用。

 grep -e ""contentState\":\"STOPPED\" /opt/logs/out.log | tail -1



 {\"eventType\":\"appAction\",\"action\":\"CONTENT_STATE_CHANGE\",\"evt\":{\"contentState\":\"STOPPED\"}}}

1 个答案:

答案 0 :(得分:1)

要搜索"contentState\":\"STOPPED\",您需要(a)将整个字符串放在单引号中以保护它,以及(b)转义(双倍)反斜杠。因此:

grep -e '"contentState\\":\\"STOPPED\\"' /opt/logs/out.log

在没有提供外部单引号的保护的情况下,未转义的双引号将受到外壳的引号去除的约束,而grep将永远看不到它们。

示例

考虑此测试文件:

$ cat log
good "contentState\":\"STOPPED\"
bad contentState\":\"STOPPED\"
bad "contentState\":\"STOPPED"

让我们运行命令:

$ grep -e '"contentState\\":\\"STOPPED\\"' log
good "contentState\":\"STOPPED\"

如我们所见,只返回好行。