我读的是the jq manual,上面写着:
-f filename / --from-file filename:
从文件中读取筛选器,而不是像awk的命令行那样从命令行读取筛选器 -f选项.您也可以使用"#"来进行注释.
我在我的命令行中键入了以下内容:
$ cat input.json | jq -rf filter.jq
我的filter.jq
号档案是:
.signal[] | .name
# .signal[] | select(.name | contains("signal")) as $matches
这给了我一个错误:
$ cat input.json | jq -rf filter.jq
jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
jq: 1 compile error
如果将\
附加到第一行的末尾,则会得到不同的错误:
$ cat input.json | jq -rf filter.jq
jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
\
jq: 1 compile error
我也试了\\
次,结果也差不多.
我发现的唯一解决办法是将这两行合并为一行.但这限制了我记录我的过滤器并将该文件用作实验的playground 的能力.如何在JQ过滤器文件中使用多行?
注:我已经在Cygwin和WSL上try 了这一点,并得到了相同的结果.