sed コマンドおよび環境変数に関する問題

sed コマンドおよび環境変数に関する問題

settings.jsonという設定ファイルがあり、その例は次のとおりです。

{
  "token": "inserttokenhere",
  "role": 766507041757069351,
  "channel": 766507042113847383,
}

sedコマンドを使用してトークンの後の値を変更しようとしています(この例ではここに挿入)。これを置き換えるために使用する値は環境変数です。私の問題は、ファイルがすでに "でいっぱいです。 LOGHOMEが基本オペレーティングシステムの一部であるため、テスト用の変数として使用しています。

sed -i "s%"token": "'.*'"%"token": "$LOGHOME""% settings.json

このうちどの部分が間違っているのでしょうか?

ベストアンサー1

sedコメントで述べたように、正しいツールは次のとおりですが、次のように試すことができますjq

sed '/token/s;[^: ]*$;\"'"$HOME"'\";' settings.json

出力:

{
  "token": "/home/user"
  "role": 766507041757069351,
  "channel": 766507042113847383,
}

おすすめ記事