특정 키를 찾고 쉘 스크립트에서 값을 바꾸는 방법은 무엇입니까?

특정 키를 찾고 쉘 스크립트에서 값을 바꾸는 방법은 무엇입니까?

다음 텍스트가 포함된 JSON 파일이 있습니다.

{"category": "yyy", "id": "xxxyyy", "environment": "fff", "client": "000000", "user": "Alex", "log_time": "xxx", "source_context": null}

user해당 파일에서 키를 찾아 해당 값을 정확히 동일한 크기( = , = ) Alex로 바꿔야 합니다 . 명령을 사용해 보았지만 제대로 작동하지 못했습니다.XXXXAlexXXXXTomXXXsed

답변1

텍스트 지향 파서(예: )를 사용하면 안 됩니다 sed. 대신 JSON 인식 파서를 사용하세요(예: jq.

시스템에 이 도구가 있으면 간단히 다음을 수행할 수 있습니다.

 jq '.user |= gsub(".";"X")' file

이렇게 하면 모든 키 문자열이 user동일한 수의 X문자로 대체됩니다.

jq이를 지원하지 않으면 다음 gsub과 같이 사용할 수 있습니다.

jq '.user |= ([range(0;length)]|.[]="X"|add)' file

관련 정보