Jq
在磁碟上儲存“jq”過濾器的好機制是什麼?
jq的典型用法
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
在磁碟上儲存過濾器的好機制是什麼?
你可以做同樣的事情。來自
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"