1. ホーム
  2. json

[解決済み] jqのインプレースでjsonのkey-valueを変更する。

2022-12-04 19:13:33

質問

ある値を変更したいjsonがあるのですが、ターミナルには常に変更された値のjsonが表示されますが、実際には特定のファイルの値が変更されません。jsonのサンプルです。

{
   name: 'abcd',
   age: 30,
   address: 'abc'
}

ファイル自体でaddressの値を変更したいのですが、今のところできません。使ってみたのですが

jq '.address = "abcde"' test.json

と表示されるのですが、うまくいきません。何か提案はありますか?

どのように解決するのですか?

よくある質問 jq はインプレース編集をサポートしていませんので、まず一時的なファイルにリダイレクトして、元のファイルをそれに置き換えるか、あるいは sponge というように、moreutils パッケージのユーティリティを使用します。

jq '.address = "abcde"' test.json|sponge test.json

出力を変数に保存するなど、quot;同じファイルにリダイレクトするテクニックは他にもあります。