使用 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"}}}

要搜索"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"

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

最新更新