"jq"フィルタをディスクに保存するための良いメカニズムは何ですか?

一般的な使い方ジャック

jq [options] <jq filter> [file...]

たとえば、ファイルをきれいに印刷するには、次のように作成します。

jq -s '.' input.json output.json

しかし、プログラムが<filter>成長するにつれて、完全なプログラムとしてディスクに保存する方がきれいです。

次の理由でこれを行うことができます。

  1. 私たちは複数のコンテキスト/ファイルでフィルタを使用し、切り取りと貼り付けの危険を冒したくありません。
  2. Makefileにフィルタを保存することは、コードを読みにくくする末尾のバックスラッシュを導入する必要があることを意味します。
  3. 運が良ければ、一部のエディタには、コードで微妙なエラーを見つけやすくするモードがあります。

最良の方法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"

おすすめ記事