일반적인 사용법잭
jq [options] <jq filter> [file...]
예를 들어, 파일을 예쁘게 인쇄하려면 다음과 같이 작성합니다.
jq -s '.' input.json output.json
그러나 프로그램이 <filter>
성장함에 따라 완전한 프로그램으로 디스크에 저장하는 것이 더 깔끔합니다.
다음과 같은 이유로 이를 수행할 수 있습니다.
- 우리는 여러 컨텍스트/파일에서 필터를 사용하며 잘라내어 붙여넣는 위험을 감수하고 싶지 않습니다.
- Makefile에 필터를 저장한다는 것은 코드를 읽기 어렵게 만드는 후행 백슬래시를 도입해야 함을 의미합니다.
- 운이 좋다면 일부 편집기에는 코드에서 미묘한 오류를 더 쉽게 발견할 수 있는 모드가 있을 수 있습니다.
가장 좋은 방법 awk
(CSV 파일의 경우 jq가 JSON 파일의 경우와 유사함)은 .awk
파일을 확장명으로 저장하고 실행 가능하게 만든 후 첫 번째 줄에 작성하는 것입니다.
#!/usr/bin/awk -f
또는
#!/opt/local/bin/gawk -f
jq
디스크에 필터를 저장하는 좋은 메커니즘은 무엇입니까?
답변1
당신도 같은 일을 할 수 있습니다. 에서 man jq
:
· -f filename / --from-file filename: Read filter from the file rather than from a command line, like awk´s -f option. You can also use ´#´ to make comments.
예를 들어:
$ cat myfilter.jq
#!/usr/bin/jq --from-file
.[].foo // empty
실행 가능한지 확인하세요.
$ chmod +x myfilter.jq
그 다음에
$ printf '[{"foo": "bar"},{"goo": "bar"},{"foo": "bam"}]' | ./myfilter.jq
"bar"
"bam"