반응형
jq를 사용하여 JSONL을 출력하는 방법(1줄에 1개의 독립된 JSON 객체)
내 부탁은 사소하게 들리지만, 나는 그것을 할 방법을 찾을 수 없었다.입력으로 JSON 오브젝트 배열이 있습니다.
[
{
"foo": 1,
"bar": 2
},
{
"foo": 3,
"bar": 4
},
(...)
]
같은 JSONL 버전을 출력합니다.배열이 아닌 한 줄에 하나의 오브젝트라고 불립니다.
{ "foo": 1, "bar": 2 }
{ "foo": 3, "bar": 4 }
(...)
이것은 사용하는 것과 같지 않습니다.--compact-output이렇게 하면 어레이가 유지되고 다음과 같은 이점을 얻을 수 있습니다.
[ { "foo": 1, "bar": 2 }, { "foo": 3, "bar": 4 }, (...) ]
잘 부탁드립니다.
원래 질문에 대한 답은 필터를 사용하는 것입니다..[]와 함께-c명령줄 옵션:
$ jq -c '.[]'
입력파일이 매우 큰 경우(특히 너무 커서 메모리에 들어가지 않는 경우) jq를 사용하는 것이 좋습니다.--stream명령줄 옵션 또는 보조 도구입니다.수치 정밀도를 유지하는 것이 중요한 경우 다음 사항을 고려할 수 있습니다.jm특히 사용하기 쉬운 : 호출jm어떤 매개 변수도 없이 충분합니다.jq Cookbook을 참조하십시오.https://github.com/stedolan/jq/wiki/Cookbook
입력 배열이 너무 커서 메모리에 맞지 않을 경우 jq의 소위 "스트리밍 파서"를 사용할 수 있습니다.
일반적인 접근방식을 사용한 그림은 다음과 같습니다.즉, 톱 레벨 어레이의 항목에 대한 전제 조건은 없습니다.
$ echo '[{"foo":"bar"},99,null,{"foo":"baz"}]' |
jq -cn --stream 'fromstream( inputs|(.[0] |= .[1:]) | select(. != [[]]) )'
{"foo":"bar"}
99
null
{"foo":"baz"}
$
찾았다:
map(tostring) | reduce .[] as $item (""; . + $item + "\n")
또,--raw-output.
언급URL : https://stackoverflow.com/questions/42178636/how-to-use-jq-to-output-jsonl-one-independent-json-object-per-line
반응형
'source' 카테고리의 다른 글
| Angular UI-Bootstrap에서 모달의 "해체"와 "닫기"의 차이점은 무엇입니까? (0) | 2023.02.15 |
|---|---|
| 웹 팩을 사용하여 인라인 svg를 설정하는 방법 (0) | 2023.02.15 |
| JSON에서 고유한 값 선택 (0) | 2023.02.15 |
| 구글 지도를 앵귤러로 초기화하다JS (0) | 2023.02.15 |
| null, 비어 있거나 정의되지 않은 angularjs 확인 (0) | 2023.02.15 |