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
原文地址:https://www.cnblogs.com/nlsoft/p/13491615.html