!['jq' 필터를 디스크에 저장하는 좋은 메커니즘은 무엇입니까?](https://rvso.com/image/192239/'jq'%20%ED%95%84%ED%84%B0%EB%A5%BC%20%EB%94%94%EC%8A%A4%ED%81%AC%EC%97%90%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%8A%94%20%EC%A2%8B%EC%9D%80%20%EB%A9%94%EC%BB%A4%EB%8B%88%EC%A6%98%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
일반적인 사용법은jq
jq [options] <jq filter> [file...]
예를 들어, 작성한 파일을 예쁘게 인쇄하려면
jq -s '.' input.json output.json
그러나 규모가 <filter>
커지면 완전한 프로그램으로 디스크에 저장하는 것이 더 깔끔합니다.
우리는 다음과 같은 이유로 그렇게 하고 싶을 수도 있습니다:
- 우리는 여러 컨텍스트/파일에서 필터를 사용하고 있으며 잘라내어 붙여넣는 위험을 원하지 않습니다.
- Makefile에 필터를 저장한다는 것은 코드의 가독성을 떨어뜨리는 후행 백슬래시를 도입해야 함을 의미합니다.
- 운이 좋다면 일부 편집기에 코드의 미묘한 실수를 더 쉽게 찾아낼 수 있는 모드가 있을 수도 있습니다.
할 수 있는 가장 좋은 방법 awk
(Jq가 JSON 파일에 대한 것과 같은 CSV 파일에 대한 것임)은 .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"