JQ - 打印“ - ”为空值

Chr*_*ris 18 json jq

输入json:

{
  "id": "3885",
  "login": "050111",
  "lastLoginTime": 1529730115000,
  "lastLoginFrom": "192.168.66.230"
}
{
  "id": "3898",
  "login": "050112",
  "lastLoginTime": null,
  "lastLoginFrom": null
}
Run Code Online (Sandbox Code Playgroud)

我想以制表符分隔的格式获取登录、lastLoginTime 和 lastLoginFrom 的输出:

050111  1529730115000   192.168.66.230
050112              -                -
Run Code Online (Sandbox Code Playgroud)

使用下面的 jq 过滤器,我得到的输出没有“空”值,我可以用“-”替换

$ jq -r '.|[.login, .lastLoginTime, .lastLoginFrom]|@tsv' test_json
050111  1529730115000   192.168.66.230
050112
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以为这样的空值打印“-”?

Ech*_*444 33

使用替代操作//

所以 :

$jq -r '.|[.login, .lastLoginTime // "-" , .lastLoginFrom // "-" ]|@tsv' test_json
050111  1529730115000   192.168.66.230
050112  -   -
Run Code Online (Sandbox Code Playgroud)

  • 不需要初始的`.|`。 (4认同)