Поиск строки, содержащей обратную косую черту, с помощью команды Grep - PullRequest
0 голосов
/ 01 февраля 2019

В выводе хвоста у меня есть следующая строка ... Используя команду grep, как мне найти строку "contentState\":\"STOPPED\".Я должен искать всю строку "contentState\":\"STOPPED\", а не искать STO P PED или contentState only.

Я попробовал следующую команду: Но она не работает.

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



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

1 Ответ

0 голосов
/ 01 февраля 2019

Чтобы найти "contentState\":\"STOPPED\", вам нужно (а) поместить всю строку в одинарные кавычки, чтобы защитить ее, и (б) избежать (удвоить) обратную косую черту.Таким образом:

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

Без защиты, обеспечиваемой внешними одинарными кавычками, неэкранированные двойные кавычки будут подвергаться удалению цитаты оболочки *1006* и grep никогда их не увидит.

Пример

Рассмотрим этот тестовый файл:

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

Запустим нашу команду:

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

Как мы видим, возвращается хорошая строкаи только хорошая линия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...