ファイルの値をjqに置き換えます(1行)。

ファイルの値をjqに置き換えます(1行)。

「CTE_LG_LL_OE」の値を「警告」から「準備」に変更したいと思います。

{ "abcd": { "aav": "on", "vvg": "iio7890_APPID", "ct": "b-tte", "eSL": true, "it": "https://%ght%.mjk.com/", "tpo": "i-1", "pd": false, "pm": false, "pr": "" }, "en": { "CTE_LG_LL_OE": "warn", "S_G_EL_OD": "INFO", "G_LG_EL_OVE": "info" }, "EN_HTTPS": false }

次のコマンドを使用してファイル内の同じ内容を見つけることができますが、どのようにライナーコマンドに置き換えることができますか?

jq '.' /abc/temp/config.json | grep CTE_LG_LL_OE

ベストアンサー1

到着得るキー値の場合は、JSON認識ツールを代わりに使用してくださいjqgrepこれを行うにはいくつかの理由があります。

  1. 抽出した値は次のようになります。コード化。 ()オプションと組み合わせて使用​​すると、ツールjqはそれをデコードします。-r--raw-output
  2. 使用時に値とキーを区別しないgrepため、抽出する意図のないデータが誤って抽出される可能性があります。

CTE_LG_LL_OE最上位項目からキー値を抽出しますen

jq -r '.en.CTE_LG_LL_OE' file

値を文字列に設定readyし、結果の文書をファイルに書き込みますnew-file

jq '.en.CTE_LG_LL_OE |= "ready"' file >new-file

この|=演算子は、左側のキーの「パス」と右側のキーの新しい値を使用する「更新演算子」です。

シェル変数の値を設定するには:

jq --arg newval "$newvalue" '.en.CTE_LG_LL_OE |= $newval' file >new-file

これはjqシェル変数から呼び出された変数を生成し、それを式に使用します。変数の値は自動的に.jsonにエンコードされます。$newvalnewvaluejqjq

読みやすくするために少し間隔を置いてください(質問にタグが付けられているため、これがシェルスクリプトの一部であると仮定)。):

jq --arg newval "$newvalue" \
    '.en.CTE_LG_LL_OE |= $newval' file >new-file

ファイルの内部編集(jq内部編集はデフォルトではサポートされていません):

tmpfile=$(mktemp)

cp file "$tmpfile" &&
jq --arg newval "$newvalue" \
    '.en.CTE_LG_LL_OE |= $newval' "$tmpfile" >file &&
rm -f "$tmpfile"

セリフチェロ:

tmpfile=$(mktemp); cp file "$tmpfile" && jq --arg newval "$newvalue" '.en.CTE_LG_LL_OE |= $newval' "$tmpfile" >file && rm -f "$tmpfile"

わからない場合どこドキュメント構造では、CTE_LG_LL_OEキーはにあり、値を更新しようとします。みんな CTE_LG_LL_OE値を含むキーwarn

jq '
    (
        .. |
        select(type == "object" and .CTE_LG_LL_OE? == "warn").CTE_LG_LL_OE
    ) |= "ready"' file

これにより、文書全体のすべてのキーと値が再帰的に検証されます。CTE_LG_LL_OEevalueを持つキーを持つすべてのオブジェクトを見つけてwarn更新しますready。改行は単に可読性のためのものです。

以前と同様に、シェル変数から値を取得できます。

jq --arg newval "$somevariable" '
    (
        .. |
        select(type == "object" and .CTE_LG_LL_OE? == "warn").CTE_LG_LL_OE
    ) |= $newval' file

明らかに、この回答の前半に示すように、これは内部編集と組み合わせることもできます。

おすすめ記事