Совпадение с регулярным выражением Bash для структуры JSON - PullRequest
0 голосов
/ 12 июня 2019

У меня есть такая структура JSON, которую я прочитал в переменную bash в виде строки:

{
        "elem1": "val1",
        "THEELEM": "THEVAL",
        "elem3": "val3"
}

Я хочу использовать регулярное выражение для сопоставления на "THEELEM": "THEVAL". Это работает, если я пробую отдельные слова, где JSON хранится в result в виде строки:

[[ $result =~ THEVAL ]] && echo "yes"

Но я хочу сопоставить пару ключей следующим образом:

[[ $result =~ "THEELEM": "THEVAL" ]] && echo "yes"

Это вызывает у меня проблемы с синтаксисом. Я пытался убежать, одинарные и тройные кавычки безрезультатно. Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Цитирование работает для меня.

[[ $result =~ '"THEELEM": "THEVAL"' ]] && echo "yes"

Обратите внимание, что цитирование шаблона отключает распознавание специальных символов регулярного выражения и просто выполняет поиск литеральной подстроки. Здесь это не проблема, так как у вас нет подстановочных знаков или других не буквальных шаблонных символов. Но если бы вы это сделали, вам пришлось бы поместить шаблон в переменную, как в ответе @ noah.

1 голос
/ 12 июня 2019

Вы можете создать переменную $ expr для хранения строки, которой хотите соответствовать, и затем использовать ее для регулярного выражения.

expr='"THEELEM": "THEVAL"'
[[ $result =~ $expr ]] && echo "yes"

Вдохновленный этим сообщением переполнения стека

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