首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在shell管道中使用`jq`?

如何在shell管道中使用`jq`?
EN

Stack Overflow用户
提问于 2018-03-02 04:56:02
回答 2查看 0关注 0票数 0

我似乎无法jq在shell管道中正常运行。例如:

代码语言:javascript
复制
$ curl -s https://api.github.com/users/octocat/repos | jq | cat

结果jq只是打印出帮助文本*。如果我尝试将jq输出重定向到文件,会发生同样的情况:

代码语言:javascript
复制
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json

我怎样才能防止这种行为,以便我可以jq在管道中使用?

EN

回答 2

Stack Overflow用户

发布于 2018-03-02 13:16:19

你需要提供一个过滤器作为参数。要通过jq默认情况下未经修改的JSON来传递JSON ,请使用标识过滤器.

代码语言:javascript
复制
curl -s https://api.github.com/users/octocat/repos | jq '.' | cat
票数 0
EN

Stack Overflow用户

发布于 2018-03-02 13:58:43

我发现自己经常做的一个用例是“如何构建JSON数据以供应给其他shell命令,例如curl?” 我这样做的方式是使用--null-input/-n选项:

根本不读任何输入!相反,过滤器运行一次使用null作为输入。当jq用作简单计算器或从头开始构建JSON数据时,这非常有用。

还有一个例子将它传递给curl

代码语言:javascript
复制
jq -n '{key: "value"}' | curl -d @- \
  --url 'https://some.url.com' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档