首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以在jq命令中包含当前时间戳?

是否可以在jq命令中包含当前时间戳?
EN

Stack Overflow用户
提问于 2020-04-15 13:29:11
回答 3查看 1.7K关注 0票数 4

我正在运行curl rest-api调用,并尝试在UBUNTU中增加一些键/值对。这是我现在的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl ..... | jq -c '{"online": .switches.optional.online, "offline": .switches.optional.offline}'

我收到的输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ "online": 85, "offline": 196 }

但我真正想要的是有现在的时间戳,包括json的身体,好像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   { "current-time": "Wed Apr 15 14:18:42 PDT 2020", "online": 85, "offline": 196 }

API响应体没有当前的时间戳消息,这能由jq本身触发吗?

谢谢。

杰克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-15 13:51:31

应该可以将另一个命令(或变量等)的结果传递给jq命令。

如果在bash中,下面这样的内容可以工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl ..... | jq -c --arg datum "$(date)" '{"online": .switches.optional.online, "offline": .switches.optional.offline, "current-time": $datum}'

在这里,我们将$(date)命令的结果作为参数$datum传递给jq过滤器。

date命令可以给出以多种不同方式格式化的当前时间。

票数 2
EN

Stack Overflow用户

发布于 2020-04-15 13:38:40

jq有now内置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TZ=UTC jq -n 'now | strftime("%a %b %d, %Y %Z %H:%M:%S")'
"Wed Apr 15, 2020 UTC 21:51:07"

请注意,环境变量TZ将影响strftime生成的字符串的%Z部分,但不影响数值时间部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TZ=Australia/Sydney jq -n 'now | strftime("%a %b %d, %Y %Z %H:%M:%S")'
"Wed Apr 15, 2020 AEST 21:52:19"

相反,jq和gojq (jq的Go实现)的strflocaltime函数将显示相对于TZ的“本地时间”:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gojq -n 'now | strflocaltime("%a %b %d, %Y %Z %H:%M:%S")'
"Wed May 04, 2022 EDT 17:39:48"

$ TZ=Australia/Sydney gojq -n 'now | strflocaltime("%a %b %d, %Y %Z %H:%M:%S")'
"Thu May 05, 2022 AEST 07:40:00"

$ TZ=Australia/Sydney jq -n 'now | strflocaltime("%a %b %d, %Y %Z %H:%M:%S")'
"Thu May 05, 2022 AEST 07:40:00"
票数 6
EN

Stack Overflow用户

发布于 2020-04-15 14:04:17

假设卷曲的反应看起来跟我硬编码的一样..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ jq --arg now "$(date)" '{"current-time": $now, "online": .switches.optional.online, "offline": .switches.optional.offline}' <<<'{ "switches": {"optional": {"online": 85, "offline": 196 }}}'

{
  "current-time": "Wed Apr 15 22:03:00 UTC 2020",
  "online": 85,
  "offline": 196
}

在网上试试!

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61238933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文