다음과 같은 내용이 있습니다 sample.json
.
{key:value}
AWS Secrets CLI 명령 출력을 원합니다( secretstring json object
).
{
user:name,
pass:word
}
위의 JSON 파일에 추가되어 이제 파일은 다음과 같습니다.
{
key:value,
user:name,
pass:word
}
시도해 보았지만 jq
json 파일을 명령 출력으로 덮어쓰고 \
이스케이프 문자로 따옴표를 붙였습니다.
답변1
실제로 JSON 데이터를 다루고 있다고 가정합니다(질문에 표시된 문자열 중 유효한 JSON이 없습니다).
some-json-generating-command | jq -s add sample.json - | sponge sample.json
... some-json-generating-command
JSON 출력을 생성하는 명령은 어디에 있고 sample.json
JSON 문서는 어디에 있습니까?
이 파이프를 사용하면 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