我用一个非常小的文件测试了“ jq --seq”
jq --seq ".title, .id" test.json
test.json是这样的:
{"title": 3, "id":4}
{"title": 3, "id":4}
{"title": 3, "id":4}
我得到了这个错误。而且jq除了此错误外什么都不输出
ignoring parse error: Unfinished abandoned text at EOF at line 4, column 0
如何正确使用jq --seq?
答案 0 :(得分:1)
--seq
格式要求每个值都以ASCII RS字符(dec 30 / hex 1E)开头
使用
application/json-seq
MIME类型方案在jq的输入和输出中分隔JSON文本。这意味着将在输出的每个值之前打印一个ASCII RS(记录分隔符)字符,并在每个输出之后打印一个ASCII LF(换行)字符。无法解析的输入JSON文本将被忽略(但会发出警告),并丢弃所有后续输入,直到下一个RS。此模式还将解析不带--seq
选项的jq的输出。
如果将这些字符添加到文件中,它将起作用。
txt = <<~JSON
\x1e{"title": 1, "id":2}
\x1e{"title": 3, "id":4}
\x1e{"title": 5, "id":6}
JSON
File.write('test.json', txt)
然后
% jq --seq ".title, .id" test.json
1
2
3
4
5
6
但是看起来您根本不需要此选项?取出文件(不带RS字符)并将其馈送到jq ".title, .id" test.json
会产生相同的结果。