6

json ファイルをさまざまな json ファイルに分割しようとしています。入力 (r1.json) は次のようになります。

 {

    "results" : [

                {
            content 1
}
,
{
            content 2
}
,
{
            content n
}

    ]
}

出力をn個のファイルにしたい:1.json、2.json、n.json。それぞれ {content 1}、{content 2}、および {content n} を含みます。

私は試した :

for i in {0..24}; do cat r1.json | jq '.results[$i]' >> $i.json; done

しかし、次のエラーがあります: エラー: i が定義されていません

4

3 に答える 3

5

試す

for i in {0..24}; do cat r1.json | jq ".results[$i]" >> $i.json; done

シェル変数は、単一引用符内で展開できないことに注意してください。

IHTH

于 2015-12-23T00:51:58.073 に答える
3

一重引用符はおそらくあなたを混乱させているものです。Bash 変数は単一引用符で展開されません。.results[$i]にリテラル文字列を渡していますjq。代わりに二重引用符を試してください:

for i in {0..24}; do
    cat r1.json | jq ".results[$i]" >> $i.json
done
于 2015-12-23T00:56:22.687 に答える