jq:查找 null 并将其替换为零 (0)

Cre*_*Arc 2 null json jq

鉴于此输出:

cat file.json | jq -cr '.[] | .name, .time.total, .dueOn'
Run Code Online (Sandbox Code Playgroud)

我得到输出:

Task one
35160
2020-08-14
Task two
null
null
Task three
null
null
Task 4
2280
null
Run Code Online (Sandbox Code Playgroud)

我想将“null”的time.total值更改为 0,以便我可以对其进行数学运算。(我打算除以 3600 将值转换为小时,例如 1.25)

我读过无数的 SE 文章,毫无疑问我的 jq 能力还没有达到应有的水平。但我希望有一个基本的解决方案!

期望的输出是:

Task one
35160
2020-08-14
Task two
0
null
Task three
0
null
Task 4
2280
null
Run Code Online (Sandbox Code Playgroud)

pea*_*eak 7

你可以写.time.total

(.time.total // 0)
Run Code Online (Sandbox Code Playgroud)

  • 非常粗略地说:x // y 表示“如果 x 为 false、null 或为空,则 y,否则为 x”。请参阅 https://github.com/stedolan/jq/wiki/FAQ#or-versus- (2认同)