[shell] 쉘 파이프 라인에서`jq`를 사용하는 방법은 무엇입니까?
jq
쉘 파이프 라인에서 “정상적으로”동작 하지 않는 것 같습니다 . 예를 들면 다음과 같습니다.
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
결과 jq
단순히 도움말 텍스트 *을 인쇄. jq
의 출력을 파일 로 리디렉션하려고하면 동일한 문제가 발생 합니다.
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
되어 jq
그것이 터미날에서 실행되지 않고 있다고 판단 할 경우 의도적으로 구제? jq
파이프 라인에서 사용할 수 있도록이 동작을 방지하려면 어떻게해야합니까?
* (이 예제에는 쓸모없는 고양이 사용 이 포함되어 있습니다 .
답변
필터를 인수로 제공해야합니다. jq
기본적으로 예쁜 인쇄가 아닌 수정되지 않은 상태로 JSON을 전달하려면 ID 필터를 사용하십시오 .
.
curl -s https://api.github.com/users/octocat/repos | jq '.' | cat
답변
자주 사용하는 것으로 확인 된 사용 사례 중 하나는 “예를 들어 다른 쉘 명령에 제공 할 JSON 데이터를 어떻게 구성 curl
합니까?”입니다. 내가하는 방법은 --null-input/-n
옵션 을 사용하는 것입니다.
입력 내용을 전혀 읽지 마십시오! 대신,
null
입력으로 필터를 한 번 실행 합니다.jq
간단한 계산기로 사용하거나 처음부터 JSON 데이터를 구성 할 때 유용합니다 .
그리고 그것을 전달하는 예제 curl
:
jq -n '{key: "value"}' | curl -d @- \
--url 'https://some.url.com' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'