jq는 슬래시가 포함된 키를 어떻게 처리합니까?

jq는 슬래시가 포함된 키를 어떻게 처리합니까?

내 테스트 json 파일은 다음과 같습니다.

{
   "server":"xxx",
   "cert":"line1\nline2",
   "security/path": "/var/log/systems.log"
}

key 로 필터링하고 싶지만 security/path다음 명령 중 어느 것도 작동하지 않습니다.

jq .security/path test.json
jq: error: path/0 is not defined at <top-level>, line 1:
.security/path
jq: 1 compile error

jq '.security/path' test.json동일한 결과가 나타납니다.

답변1

~에서기본 필터:

객체 식별자 인덱스:

...

키에 특수 문자가 포함되어 있거나 숫자로 시작하는 경우 다음과 같이 큰따옴표로 묶어야 합니다. ."foo$"그렇지 않으면 .["foo$"]

....

그래서,

$ jq -r '."security/path"' test.json
/var/log/systems.log

답변2

출력이 다음과 같을 경우,

  "annotations": {
    "eks.amazonaws.com/role-arn": "arn:aws:iam::907636088649:role/stg-eks_helm-chart",
    "meta.helm.sh/release-name": "helm-chart-base",
    "meta.helm.sh/release-namespace": "stg-helm-chart"
  }

다음은 작동합니다.

jq -r '.metadata.annotations["eks.amazonaws.com/role-arn"]'

다음과 같은 출력이 생성됩니다.

arn:aws:iam::907636088649:role/stg-eks_helm-chart

관련 정보