在尾部输出中,我有以下字符串...使用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\"}}}
答案 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\"
如我们所见,只返回好行。