Bash를 사용하여 구성(중첩 구성 포함) 파일 읽기

Bash를 사용하여 구성(중첩 구성 포함) 파일 읽기

.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옵션은 yjHCL에서 JSON으로 변환합니다( yj -h사용 가능한 옵션의 전체 목록은 참고자료 참조).

이렇게 하면 섹션이 배열로 yj변환 됩니다. category1입력 HCL 파일에 추가 category1섹션이 있는 경우 추가 섹션은 배열의 또 다른 요소가 됩니다.

JSON 형식으로 변환되면 일반적인 JSON 프로세서를 사용하여 jq필요한 데이터를 추출할 수 있습니다.

$ yj -cj <file | jq -r '.category1[0].Key1'
value1

이 표현식은 jq배열의 첫 번째 요소에 있는 키에 해당하는 값을 선택합니다. 이 옵션을 사용하면 JSON으로 인코딩된 인용 문자열이 아닌 "원시 데이터"가 반환됩니다.Key1category1srjq

이는 명령 대체를 통해 변수로 추출될 수 있습니다.

$ val1=$(yj -cj <file | jq -r '.category1[0].Key1')
$ printf '1st value = %s\n' "$val1"
1st value = value1

관련 정보