
典型用法傑克
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"