将bson转换为bash中的键/值文件

时间:2017-12-06 14:21:52

标签: json bash jq

我有一个看起来像这样的JSON:

{
    "lorem": "ipsum",
    "dolor": "sid",
    "data": {
        "key1": "value1",
        "key2": "value2"
    }
}

我想要一个输出,就像我只需要数据的内容一样。 (总是扁平的,没有分支)。输出应如下所示:

key1=value1
key2=value2

我可以使用jq(只是不让它运行)但必须使用bash脚本。有人可以帮忙吗?

3 个答案:

答案 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脚本