JQ解析JSON显示多字段使用内部函数时遇到的有趣问题

想得到 "小张 20200812-142501" 结果,就要使用内部函数 strflocaltime
test.json
{
    "LiveInfo": {
        "nick": "小张",
        "startTime": 1597213501
    }
}

方法1:
cat test.json|jq -M ".LiveInfo|(.nick + \" \" + (.startTime|strflocaltime(\"%%Y%%m%%d-%%H%%M%%S\")|tostring) )"

显示:"小张 20200812-142501"
    nick值为中文时 JQ 加 -r 参数出错 jq: error: writing output failed: Invalid argument
    nick值为英文时 JQ 加 -r 正常输出

方法2:
cat test.json|jq -M ".LiveInfo|\"\(.nick)_\(.startTime)\""
显示:"小张_1597213501"

cat test.json|jq -M ".LiveInfo|\"\(.nick)_\(.startTime|strflocaltime(\"%%Y%%m%%d-%%H%%M%%S\"))\""
    'strflocaltime' is not recognized as an internal or external command

结论:如果想使用JQ的内部函数请使用方法1

 

posted @ 2020-08-12 16:59  1CM  阅读(251)  评论(0编辑  收藏  举报