.conf
다음 데이터가 포함된 파일이 있습니다 .
category1 {
Key1="value1"
Key2="value2"
}
Bash에서 이 값을 어떻게 읽을 수 있나요?
답변1
HCL 파서는 귀하가 게시한 데이터를 읽을 수 있습니다. HCL은 구성 파일에 사용되는 HashiCorp의 구조화된 문서 형식입니다(예:여기).
HCL을 JSON과 같은 보다 일반적인 구조적 형식으로 변환하는 데 사용할 수 있는 도구가 있습니다. 그러한 도구 중 하나는 yj
(https://github.com/sclevine/yj).
$ cat file
category1 {
Key1="value1"
Key2="value2"
}
$ yj -cj <file
{"category1":[{"Key1":"value1","Key2":"value2"}]}
이 -cj
옵션은 yj
HCL에서 JSON으로 변환합니다( yj -h
사용 가능한 옵션의 전체 목록은 참고자료 참조).
이렇게 하면 섹션이 배열로 yj
변환 됩니다. category1
입력 HCL 파일에 추가 category1
섹션이 있는 경우 추가 섹션은 배열의 또 다른 요소가 됩니다.
JSON 형식으로 변환되면 일반적인 JSON 프로세서를 사용하여 jq
필요한 데이터를 추출할 수 있습니다.
$ yj -cj <file | jq -r '.category1[0].Key1'
value1
이 표현식은 jq
배열의 첫 번째 요소에 있는 키에 해당하는 값을 선택합니다. 이 옵션을 사용하면 JSON으로 인코딩된 인용 문자열이 아닌 "원시 데이터"가 반환됩니다.Key1
category1
sr
jq
이는 명령 대체를 통해 변수로 추출될 수 있습니다.
$ val1=$(yj -cj <file | jq -r '.category1[0].Key1')
$ printf '1st value = %s\n' "$val1"
1st value = value1