json - 连接 JSON 字段中的字符串并截断最后一个字符
问题描述
我想将 JSON 对象中的字符串(这是一个脚本参数 - 在本例中为“tenant-lta”)添加到字段“alertruleindexpattern”中的值并截断-*
或者*
如果它位于字符串的末尾。有人可以帮我解决这个问题吗?
JSON对象:
{
"_index": ".alertrules",
"_type": "_doc",
"_id": "tenant-lta_Windows_Admin_task_as_user",
"_score": 0.07554413,
"_source": {
"alertrulemethoddata": "",
"alertruleimportance": 50,
"alertruletype": "any",
"alertrule_any": "filter:\n - query_string:\n query: \"event_id:4732 AND NOT user.role:admin\"",
"alertrulemethodusers": [],
"alertrulemethod": "none",
"alertruleindexpattern": "winlogbeat-*",
"alertruleplaybooks": [],
"alertrulefilename": "tenant-lta_Windows_Admin_task_as_user",
"alertrulename": "tenant-lta-Windows - Admin task as user",
"enable": "N",
"selectedroles": [
"tenant-lta"
],
"alertruleriskkeyaggregation": "MAX",
"authenticator": "index",
"alertruleriskkey": "",
"changed": false
}
}
字段中的所需输出alertruleindexpattern
:
{
"alertruleindexpattern": "tenant-lta-winlogbeat",
}
我的尝试:
ruleindexpattern=`echo "$i" | jq '._source.alertruleindexpattern' | pcregrep -o1 '"(.*?)[-]?\*"$'`
sed -i 's/\"alertruleindexpattern\":\"'$ruleindexpattern'\"/\"alertruleindexpattern\":\"'$tenantname'-'$ruleindexpattern'\"/g' $alert_file
解决方案
您可以并且可能应该使用 jq 执行更新,而无需使用其他程序使事情复杂化。
假设使用—-argson tenantname
适当的 jq 调用,jq 过滤器将遵循以下几行:
._source.alertruleindexpattern
|= $tenantname + "-" + sub("-?[*]$";"")
推荐阅读
- python - 如何在 scikit-learn 的分类问题中为 F1 分数做 GridSearchCV?
- reactjs - 如何更改 Office 的 Fabric 元素的布局?
- elixir - 如何使用函数参数作为键从映射中获取值
- azure - 用于 API 访问的单个或多个 B2C 应用程序?
- python - Django select_related 链式外键不返回非直接相关对象
- chef-infra - 厨师中的“模板”资源未创建所需的文件
- python - 无法安装 python ast
- regex - regexp_replace 使用 postgresql 在指定字符处截断字符串
- python - 为什么总是跳过或忽略一条蛇规则
- node.js - 如何每 24 小时从 Lambda 发送 SNS 消息?