jqはjson値からjsonを解析します。

jqはjson値からjsonを解析します。

私は次のようなものを持っています

echo "{\"t\":\"set foo='{\\\"mode\\\":1}'\"}"|jq .
{
  "t": "set foo='{\"mode\":1}'"
}

出力が次のように見えるようにしたいです。

{
  "t": "set foo='{\"mode\":1}'",
  "mode": 1
}

それではこれを達成するためにいくつかのステップを踏んで、それを1つのjq呼び出しにまとめることができることを確認したいと思います。

答え1

この正確な入力のために、

jq '. + (.t[9:-1] | fromjson)'

やりたいことをします。文字を抽出する{"mode":1} 文字列から(9から始まり、最後は省略)これにより、両側の単一引用符が削除されます。JSONによる解析オブジェクトに変換しfromjson、最後にそのオブジェクト({"mode": 1})を元の入力(.)使用+

実際のデータと一致するようにインデックスを調整する必要があります。開口部がどこにあるかを探す必要がある場合は、それが代替として機能します'。より徹底的に分析する必要がある場合は、新しい質問をしてください。(.t|index("\u0027")+1)9

関連情報