У меня есть много строк в моих журналах CloudWatch, которые являются JSON объектами, подобными этому:
{
"friends": [
{ "name": "bob"},
{ "name": "steve"},
{ "name": "joe" }
]
}
Используя выражения регулярных выражений CloudWatch, я хотел бы извлечь все имена. У меня уже есть регулярное выражение, которое возвращает значения, которые я хочу:
/"name":[ ]*"([^"]*)"/g
Как вы видите, работает по этой ссылке: https://regex101.com/r/Bb28Pg/2
Использование CloudWatch грамматика, это регулярное выражение становится этой командой:
fields @message
| filter @message like /"friends":/
| parse @message /"name":[ ]*"(?<@name>[^"]*)"/
Но это выражение возвращает только первое имя, "bob" в примере. Я хочу получить их всех. Я попытался добавить /g
в конце выражения, но это не помогло. Я пытаюсь найти какую-то информацию в официальных документах https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html, но я не смог найти ничего, связанного с этой темой.
Есть похожий вопрос по этому поводу в Cloudwatch Поиск Insights в многострочных журналах , но он не использует команду анализа и также не имеет ответа.