Json
jq - 為空值列印“-”
輸入json:
{ "id": "3885", "login": "050111", "lastLoginTime": 1529730115000, "lastLoginFrom": "192.168.66.230" } { "id": "3898", "login": "050112", "lastLoginTime": null, "lastLoginFrom": null }
我想以製表符分隔格式獲取登錄、lastLoginTime 和 lastLoginFrom 的輸出:
050111 1529730115000 192.168.66.230 050112 - -
使用下面的 jq 過濾器,我得到的輸出沒有“空”值,我可以用“-”替換
$ jq -r '.|[.login, .lastLoginTime, .lastLoginFrom]|@tsv' test_json 050111 1529730115000 192.168.66.230 050112
有沒有其他方法可以為這些空值列印“-”?
使用替代運算符://
所以 :
$jq -r '.|[.login, .lastLoginTime // "-" , .lastLoginFrom // "-" ]|@tsv' test_json 050111 1529730115000 192.168.66.230 050112 - -
這是使用與EchoMike444 在其答案
jq
中相同的實際功能將值更改為破折號,但以另一種方式進行。null
我沒有列出要提取的
id
密鑰,而是刪除了我們不想使用的密鑰。然後我提取剩餘的值並用於map()
將值更改null
為破折號:$ jq -r '[del(.id)[]] | map(.//"-") | @tsv' file 050111 1529730115000 192.168.66.230 050112 - -