我有一个看起来像这样的JSON:
{
"lorem": "ipsum",
"dolor": "sid",
"data": {
"key1": "value1",
"key2": "value2"
}
}
我想要一个输出,就像我只需要数据的内容一样。 (总是扁平的,没有分支)。输出应如下所示:
key1=value1
key2=value2
我可以使用jq(只是不让它运行)但必须使用bash脚本。有人可以帮忙吗?
答案 0 :(得分:3)
jq
解决方案:
jq -r '.data | to_entries[] | "\(.key)=\(.value)"' input.json
输出:
key1=value1
key2=value2
答案 1 :(得分:0)
这适用于BASH。
#!/bin/bash
all_keys=$( cat input.txt );
while read key
do
grep "$key" ./text.txt | awk -F':' '{ print $1"="$2}' | tr -d '[", ]'
done <<< "$all_keys"
假设您的值在 text.txt 中,并且您的密钥位于 input.txt 。
问候!
答案 2 :(得分:0)
在python中 这将读取stdin并输出所需的&#34; key = value&#34;每行一个
#!/usr/bin/python
import json
import sys
data = sys.stdin.read()
json_structure=json.loads(data)
start_point=json_structure["data"]
for k in start_point.keys():
print("%s=%s" % (k, start_point[k]))
如果我使用python取消json输入,我可能会在python中重写bash脚本