首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换毫秒

转换毫秒
EN

Unix & Linux用户
提问于 2018-06-23 21:17:25
回答 1查看 3.8K关注 0票数 0

投入json:

代码语言:javascript
复制
{
  "id": "3885",
  "login": "050111",
  "lastLoginTime": 1529730115000,
  "lastLoginFrom": "192.168.66.230"
}
{
  "id": "3898",
  "login": "050112",
  "lastLoginTime": null,
  "lastLoginFrom": null
}

当最后一个时间存在时,过滤器可以工作:

代码语言:javascript
复制
$ jq -jr --arg ARG1 050111 'select(.login==$ARG1)|"user:", " ",.login,"\n","lastlogintime:", " ",(.lastLoginTime / 1000 | strftime("%Y-%m-%d %H:%M UTC")),"\n","lastloginfrom:", " ",.lastLoginFrom // "-","\n"' test_json3
user: 050111
lastlogintime: 2018-06-23 05:01 UTC
lastloginfrom: 192.168.66.230

但是,当最后一个时间不存在时(不打印"-")存在问题:

代码语言:javascript
复制
$ jq -jr --arg ARG1 050112 'select(.login==$ARG1)|"user:", " ",.login,"\n","lastlogintime:", " ",(.lastLoginTime / 1000 | strftime("%Y-%m-%d %H:%M UTC")),"\n","lastloginfrom:", " ",.lastLoginFrom // "-","\n"' test_json3
user: 050112
jq: error (at test_json3:12): null (null) and number (1000) cannot be divided

空最后一次如何跳过除法操作?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-06-23 21:29:09

代码语言:javascript
复制
jq -r --arg ARG1 050112 'select(.login == $ARG1)|
    ["user:", .login],
    ["lastlogintime:", if .lastLoginTime then (.lastLoginTime/1000 | strftime("%Y-%m-%d %H:%M UTC")) else "-" end],
    ["lastloginfrom:", .lastLoginFrom // "-"]
    |@tsv' file.json

也就是说,在定义或未定义if-then-else时使用显式lastLoginTime

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

https://unix.stackexchange.com/questions/451509

复制
相关文章

相似问题

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