小编Mar*_*ala的帖子

Jq EOF 处的无效数字文字

我尝试在 Json 文件中添加一个为 Raid 信息构造的记录

jq '.raid.c0.e252.s0  +={"device": "/c0/e252/s0"}' file.json
Run Code Online (Sandbox Code Playgroud)

但我有两个错误:

jq: error: Invalid numeric literal at EOF at line 1, column 5 (while parsing '.e252') at <top-level>, line 1:
.raid.c0.e252.s0  +={"device": "/c0/e252/s0"}
jq: error: syntax error, unexpected LITERAL, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.raid.c0.e252.s0  +={"device": "/c0/e252/s0"}
jq: 2 compile errors
Run Code Online (Sandbox Code Playgroud)

经过一些测试,我明白问题是字段名称。显然e<number>不被接受。事实上,使用:

jq '.raid.c0.p252.s0  +={"device": "/c0/e252/s0"}' file.json
Run Code Online (Sandbox Code Playgroud)

或者

jq '.raid.c0.eid252.s0  +={"device": "/c0/e252/s0"}' file.json
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都得到了预期的结果:

{
  "raid": {
    "c0": {
      "eid252": {
        "s0": { …
Run Code Online (Sandbox Code Playgroud)

json jq

2
推荐指数
1
解决办法
490
查看次数

标签 统计

jq ×1

json ×1