我知道 jq 搜索需要被阻止{}并且密钥需要被包裹起来",例如:
{
"id": 36815684
}
Run Code Online (Sandbox Code Playgroud)
但如果我有这样的事情:
X-RateLimit-Reset: 1452786798
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
解析错误:第 1 行第 9 列的数字文字无效
我需要回退还sed/awk/perl ..是有更优雅的使用 jq 的方式?
除了根本不使用 jq 之外,您还有两个主要选择:
(1) 预处理非 JSON 使其成为 JSON
(2) 使用 -R 命令行选项,例如
echo "X-RateLimit-Reset: 1452786798" | jq -R 'split(":")'
[
"X-RateLimit-Reset",
" 1452786798"
]
Run Code Online (Sandbox Code Playgroud)
因此,如果您知道该值将是数字:
echo "X-RateLimit-Reset: 1452786798" |
jq -Rc 'split(":") | {(.[0]) : (.[1]|tonumber)}'
{"X-RateLimit-Reset":1452786798}
Run Code Online (Sandbox Code Playgroud)
请注意,尽管 jq 中的 "j" 用于 JSON,但 jq(带有 -R 选项)对于文本处理也很好。