jq - drucke "-" für Nullwerte

11

Eingabe json:

{
  "id": "3885",
  "login": "050111",
  "lastLoginTime": 1529730115000,
  "lastLoginFrom": "192.168.66.230"
}
{
  "id": "3898",
  "login": "050112",
  "lastLoginTime": null,
  "lastLoginFrom": null
}

Ich möchte eine Ausgabe für Login, lastLoginTime und lastLoginFrom in einem durch Tabulatoren getrennten Format erhalten:

050111  1529730115000   192.168.66.230
050112              -                -

Mit dem folgenden JQ-Filter erhalte ich bei der Ausgabe keine "Null" -Werte, die ich durch "-" ersetzen könnte.

$ jq -r '.|[.login, .lastLoginTime, .lastLoginFrom]|@tsv' test_json
050111  1529730115000   192.168.66.230
050112

Gibt es eine andere Möglichkeit, "-" für solche Nullwerte zu drucken?

Chris
quelle

Antworten:

23

Verwenden Sie den alternativen Operator : //

damit :

$jq -r '.|[.login, .lastLoginTime // "-" , .lastLoginFrom // "-" ]|@tsv' test_json
050111  1529730115000   192.168.66.230
050112  -   -
EchoMike444
quelle
2
Die Initiale .|wird nicht benötigt.
Kusalananda