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

관련 정보