json 파일에 추가된 AWS CLI 출력

json 파일에 추가된 AWS CLI 출력

다음과 같은 내용이 있습니다 sample.json.

{key:value}

AWS Secrets CLI 명령 출력을 원합니다( secretstring json object).

{
user:name,
pass:word 
}

위의 JSON 파일에 추가되어 이제 파일은 다음과 같습니다.

{
key:value,
user:name,
pass:word
}

시도해 보았지만 jqjson 파일을 명령 출력으로 덮어쓰고 \이스케이프 문자로 따옴표를 붙였습니다.

답변1

실제로 JSON 데이터를 다루고 있다고 가정합니다(질문에 표시된 문자열 중 유효한 JSON이 없습니다).

some-json-generating-command | jq -s add sample.json - | sponge sample.json

... some-json-generating-commandJSON 출력을 생성하는 명령은 어디에 있고 sample.jsonJSON 문서는 어디에 있습니까?

이 파이프를 사용하면 jq파일이 파이프 왼쪽의 명령 출력과 함께 배열의 두 개별 요소로 읽혀집니다. 그런 다음 지침을 사용하여 두 요소를 병합합니다 add. 결과 출력은 GNU로 전송되며 sponge, GNU는 결과를 다시 sample.json파일에 기록합니다( jq내부 편집은 불가능합니다).

시험:

$ jq -c . sample.json
{"key":"value"}
$ jq -c . command-output.json
{"user":"name","pass":"word"}
$ cat command-output.json | jq -s add sample.json - | sponge sample.json
$ cat sample.json
{
  "key": "value",
  "user": "name",
  "pass": "word"
}

GNU가 없으면 sponge파일 복사본에서 파이프를 실행 sample.json하고 출력을 원래 이름으로 쓴 다음 파이프가 성공적으로 실행되면 임시 파일을 삭제합니다.

cp sample.json sample.tmp
some-json-generating-command | jq -s add sample.tmp - >sample.json && rm -f sample.tmp

관련 정보