Jq

在磁碟上儲存“jq”過濾器的好機制是什麼?

  • June 15, 2021

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在磁碟上儲存過濾器的好機制是什麼?

你可以做同樣的事情。來自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 -f

.[].foo // empty

並確保它是可執行的

chmod -x myfilter.jq

然後

$ printf '[{"foo": "bar"},{"goo": "bar"},{"foo": "bam"}]' | ./myfilter.jq
"bar"
"bam"

引用自:https://unix.stackexchange.com/questions/654401