【问题标题】:Bash script output JSON variable to fileBash 脚本将 JSON 变量输出到文件
【发布时间】:2014-11-13 22:19:25
【问题描述】:

我在 Ubuntu 的命令行中使用 twurl 连接到 Twitter 流 API,并使用 this processor 解析生成的 JSON。我有以下命令,它返回从伦敦发送的推文文本:

twurl -t -d locations=-5.67,50.06,1.76,58.62 language=en -H stream.twitter.com /1.1/statuses/filter.json | jq '.text'

这很好用,但我很难将结果输出到名为 london.txt 的文件中。我尝试了以下方法,但仍然没有运气:

twurl -t -d locations=-5.67,50.06,1.76,58.62 language=en -H stream.twitter.com /1.1/statuses/filter.json | jq '.text' > london.txt

由于我是 Bash 脚本的新手,我确信我误解了正确使用 '>' 和 '>>',所以如果有人能指出我正确的方向,那就太棒了!

【问题讨论】:

  • command > file 截断文件并将命令的输出重定向到该文件。 >> 的作用相同,但它是追加而不是截断。 删除重定向部分,看看正在打印什么。结果就是您应该在文件中看到的内容。
  • 谢谢,我明白了。我的问题是这个命令根本没有向文件输出任何东西,
  • 当您运行该命令时,您在london.txt 中得到了什么?因为当你在没有重定向的情况下运行它时,你应该得到打印到终端的任何内容。
  • 什么都没有!如果我在没有> london.txt 的情况下运行它,我会得到我所期望的。 jq '.text' 仅将推文的文本返回到终端,但我无法将任何内容保存到文件中......
  • 如果我们可以自己测试而不需要设置 Twitter 帐户,那就太好了。您能否将返回值的样本复制到公开可用的某个地方(理想情况下,是允许原始访问的 pastebin,因此我们可以运行 curl ... | jq 来代替 twurl ... | jq 来重现您的结果)?

标签: json linux bash


【解决方案1】:
twurl -t -d locations=-5.67,50.06,1.76,58.62 language=en -H stream.twitter.com /1.1/statuses/filter.json | jq '.text' > london.txt

它将替换粘贴在其上的每个新行。但是如果你使用>>,它会将下一个写操作附加到文件末尾。所以试试下面上面的例子,我确信它会起作用。

twurl -t -d locations=-5.67,50.06,1.76,58.62 language=en -H stream.twitter.com /1.1/statuses/filter.json | jq '.text' >> london.txt

您也可以使用tee 命令检查重定向旁边打印的内容

twurl -t -d locations=-5.67,50.06,1.76,58.62 language=en -H stream.twitter.com /1.1/statuses/filter.json | jq '.text'| tee london.txt

【讨论】:

  • 感谢您的回答!不幸的是,完全相同的问题。什么都没有输出!
  • 请检查最后一个@DanB
  • 同样的结果。是否与需要以特定方式关闭的连接有关?
  • 是的,这可能是问题@DanB,但在这种情况下,我实际上对面向连接的问题一无所知,所以我认为我不会对此有太大帮助。很抱歉占用您宝贵的时间,只是想帮助您。
猜你喜欢
  • 2021-11-11
  • 2015-07-24
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
相关资源
最近更新 更多