[解決済み] bashスクリプトでjsonファイルを変更する
2023-05-07 01:57:10
質問
以下の問題を解決するために、あなたの助けが必要です。 私は次のようなJSONファイルを持っています。
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
新しいキーを追加したり削除したりするにはどうすればよいのでしょうか (すなわち
"key4": "value4"
をbashスクリプトで追加・削除するにはどうしたらよいでしょうか?
また、新しいキーを追加または削除する前に、ファイル内の最後のキーの末尾にカンマを追加または削除するという問題もありますね。
ありがとうございます。
どのように解決するのですか?
あなたの
JSON CLIを使用するのが最善策です。
のような
jq
:
-
Ubuntu のような Debian ベースのシステムでは
sudo apt-get install jq
-
macOS では、Homebrew を使って (
http://brew.sh/
) がインストールされている場合
brew install jq
例: 次の入力文字列に基づいて - 出力は次のとおりです。
stdout
:
jsonStr='{ "key1": "value1", "key2": "value2", "key3": "value3" }'
キー3(quot)を削除してください。
jq 'del(.key3)' <<<"$jsonStr"
プロパティ "key4" を値 "value4" と共に追加します。
jq '. + { "key4": "value4" }' <<<"$jsonStr"
既存のプロパティ "key1" の値を "new-value1" に変更します。
jq '.key1 = "new-value1"' <<<"$jsonStr"
より堅牢な代替案
をありがとうございます。
Lars Kiesow
:
新しい値を
--arg
,
jq
は値を適切にエスケープするように配慮しています。
jq '.key1 = $newVal' --arg newVal '3 " of rain' <<<"$jsonStr"
もし、あなたが JSON ファイルをその場で更新したい場合 (概念的には) のように、"key3"を削除する例で説明します。
# Create test file.
echo '{ "key1": "value1", "key2": "value2", "key3": "value3" }' > test.json
# Remove "key3" and write results back to test.json (recreate it with result).
jq -c 'del(.key3)' test.json > tmp.$$.json && mv tmp.$$.json test.json
入力ファイルを直接置き換えることはできないので、結果は一時ファイルに書き込まれ、成功したときに入力ファイルを置き換えます。
注意点として
-c
オプションに注意してください。このオプションは、プリティプリントされたJSONではなく、コンパクトなJSONを生成します。
については すべてのオプションとコマンド を参照してください。 マニュアル で http://stedolan.github.io/jq/manual/ .
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 型 '{}' は型 'IntrinsicAttributes & IntrinsicClassAttributes' に代入できません。
-
[解決済み] Elasticsearchでネストしたオブジェクトを検索する方法
-
[解決済み] JQ:キーに対するフィルタリング
-
[解決済み] Azure VMのエラーです。"あなたのアカウントは、このデバイスを使用できないように設定されています。詳細については、システム管理者にお問い合わせください" [終了しました]。
-
com.fasterxml.jackson.databind.exc.MismatchedInputException: インスタンスのデシリアライズができない
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。
-
[解決済み] jqを使用してJSONからキー名を取得する方法
-
[解決済み] Scalaで使うべきJSONライブラリは?[クローズド]
-
[解決済み] Python で文字列から ANSI エスケープシーケンスを削除するにはどうすればよいですか?