[英]jq - decode json value in flow
我需要解碼流程中 apache 的授權值,並將該值替換為用戶名,返回修改后的 json。
原Json:
{ "time":"2022-04-07T12:53:39.302+0300",
....
"user":"Basic c2RwC2ZhcmZZc3Q6c2RfX2ZhcmVhz3Q=" }
我想得到 json:
{ "time":"2022-04-07T12:53:39.302+0300",
....
"user":"<login>" }
這里的解碼值是<username>:<password>
我正在嘗試為此使用jq
實用程序
stdin> | jq -r '.user | gsub ("Basic "; "") | @base64d | gsub ("^.*:"; "")'
但是jq
返回值本身,而不是修改后的 json。另外,如果 json 值( user
)不是 base64 "user":"-"
jq: error (at <stdin>:1): string ("-") is not valid base64 data
如果用戶值不包含“基本”,如何獲得完整修改的 json 並避免修改?
使用if... then... else... end
來根據值實現不同的行為。
jq '.user |= if startswith("Basic ")
then .[6:] | @base64d
else . end
' file.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.