
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,
}