运行 对 jq 中值的终端操作

Run terminal operation on values in jq

这是我输入的简化:

[
  { 
    "Index": 1, 
    "Data": "aGVsbG8gaXRlbSAx"
  }, 
  { 
    "Index": 2, 
    "Data": "dGhpcyBpcyBpdGVtIDI="
  }
]

我需要用解码后的文本替换B64加密数据。

我解码加密字符串的命令如下所示:

base64 -D <<< "aGVsbG8gaXRlbSAx"echo "aGVsbG8gaXRlbSAx" | base64 -D

如何使用 jq 修改每个 "Data" 值然后 return 整个 json 文件?

jq 1.6 可以使用 @base64d 字符串格式化程序在内部解码 base64 数据:

$ jq '[.[] | . + { Data: .Data | @base64d }]' input.json
[
  {
    "Index": 1,
    "Data": "hello item 1"
  },
  {
    "Index": 2,
    "Data": "this is item 2"
  }
]

简而言之:

map( .Data |= @base64d )