我有两个问题:
_RDS_PASSWORD
)开头的“名称”字段,并删除前面的下划线(因此它成为RDS_PASSWORD
)_RDS_PASSWORD
)开头的“名称”字段使用jq并传递通过base64解码的值cGFzc3dvcmQK
的值?(例:"cGFzc3dvcmQK“= base64 --译码器)输入:
[
{
"name": "RDS_DB_NAME",
"value": "rds_db_name"
},
{
"name": "RDS_HOSTNAME",
"value": "rds_hostname"
},
{
"name": "RDS_PORT",
"value": "1234"
},
{
"name": "RDS_USERNAME",
"value": "rds_username"
},
{
"name": "_RDS_PASSWORD",
"value": "cGFzc3dvcmQK"
}
]
期望产出:
[
{
"name": "RDS_DB_NAME",
"value": "rds_db_name"
},
{
"name": "RDS_HOSTNAME",
"value": "rds_hostname"
},
{
"name": "RDS_PORT",
"value": "1234"
},
{
"name": "RDS_USERNAME",
"value": "rds_username"
},
{
"name": "RDS_PASSWORD",
"value": "password"
}
]
发布于 2018-01-23 16:25:53
Q1
walk( if type=="object" and has("name") and .name[0:1] == "_"
then .name |= .[1:]
else .
end)
如果您的jq没有walk/1
,那么您可以升级到比1.5更新的jq版本,或者包括它的def
,这可以在https://github.com/stedolan/jq/blob/master/src/builtin.jq上找到
Q2
.. | objects | select(has("name") and .name[0:1] == "_") | .value
如果您确信编码的字符串是UTF-8字符串,则可以使用jq的@base64d 64d;否则,使用-r选项调用jq,并按照您的计划将结果传输到解码器。
https://stackoverflow.com/questions/48412767
复制