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