如何在使用 JQ 和 SED 处理后将流式 JSON 打印到文件

如何在使用 JQ 和 SED 处理后将流式 JSON 打印到文件

我正在使用以下代码下载流式金融数据

curl -s -H "Content-Type: application/json" -H "Authorization: Bearer XXX..." "https://...=EUR_USD" | jq --raw-output '[.time, .bids[0].price, .asks[0].price] | @csv'

从而在终端中成功流式传输

"2020-05-05T10:02:37.060299264Z","1.08472","1.08481"

然而,我真正想要的是使用 sed 进一步处理这个,以获得

2020,05,05,10,02,37.060299264,1.08472,1.08481

然后将其附加到一个文件中,我们称之为“输出”,但是当我尝试通过管道传输到 sed 时,我不再看到流数据,尽管我确信我的 sed 语法是正确的,因为我已经对照静态测试文件检查了它。

所以我的问题是:如何进一步通过管道传输到 sed,然后附加到文件“输出”?

答案1

为了回应格伦·杰克曼要求我发布答案的评论,我发现对我有用的语法是:

stdbuf -oL -eL curl -s -H "Content-Type: application/json" -H "Authorization: Bearer XXX..." "https://...=EUR_USD" | jq --raw-output --unbuffered '[.time, .bids[0].price, .asks[0].price] | @csv' | sed -u 's/["Z]//g' | sed -u 's/[-T:]/,/g' >> ~/path/to/append/to/output

它以我原来的问题中描述的所需格式附加到文件中。我还可以时不时地查看“输出”文件,并看到流数据不断被附加。

相关内容