【问题标题】:convert output to json in shell在shell中将输出转换为json
【发布时间】:2021-09-21 21:49:45
【问题描述】:

输入:

BBAOMACBOOKAIR2?976?AMPDeviceDiscoveryAgent[976]:?      - Can't handle disconnect with invalid ecid?0700-0800?8
BBAOMACBOOKAIR2?976?AMPDeviceDiscoveryAgent[976]:?      - Can't handle disconnect with invalid ecid?0800-0900?40
BBAOMACBOOKAIR2?976?AMPDeviceDiscoveryAgent[976]:?      - Can't handle disconnect with invalid ecid?0900-1000?18
BBAOMACBOOKAIR2?976?AMPDeviceDiscoveryAgent[976]:?      - Can't handle disconnect with invalid ecid?1000-1100?14
BBAOMACBOOKAIR2?976?AMPDeviceDiscoveryAgent[976]:?      - Can't handle disconnect with invalid ecid?1100-1200?2

代码:

input | jq -R 'split("?")|{ deviceName:.[0], ProcessId:.[1], processName:.[2], description:.[3], timeWindow:.[4], numberOfOccurrence:.[5] }'

错误:我试图通过一夜之间搜索谷歌结果来解决它,但我一无所获。你能告诉我哪里出错了吗?

jq: error: syntax error, unexpected IDENT, expecting '}' (Unix shell quoting issues?) at <top-level>, line 1:
split("?")|{ deviceName:.[0], ProcessId:.[1], processName:.[2], description:.[3] timeWindow:.[4], numberOfOccurrence:.[5] }                                                                                 
jq: error: May need parentheses around object key expression at <top-level>, line 1:
split("?")|{ deviceName:.[0], ProcessId:.[1], processName:.[2], description:.[3] timeWindow:.[4], numberOfOccurrence:.[5] } 

【问题讨论】:

  • 它对我有用。
  • @Barmar 你能告诉我输出吗?
  • [root@localhost bash]# bash -version GNU bash,版本 4.2.46(2)-release (x86_64-redhat-linux-gnu) 版权所有 (C) 2011 Free Software Foundation, Inc. [root@localhost bash]# jq --version jq-1.6
  • 对我也有用;输出一堆单独的 JSON 对象。
  • 请注意,错误信息中回显的jq过滤器与您提供的不一样;错误中的一个缺少逗号。这肯定可以解释为什么该过滤器不起作用。

标签: bash shell jq


【解决方案1】:

字段“description”和“timeWindow”之间缺少逗号。 jq 错误信息反映了错字:

jq: error: syntax error, unexpected IDENT, expecting '}' (Unix shell quoting issues?) at <top-level>, line 1:
split("?")|{ deviceName:.[0], ProcessId:.[1], processName:.[2], description:.[3] timeWindow:.[4], numberOfOccurrence:.[5] }                                                                                 
jq: error: May need parentheses around object key expression at <top-level>, line 1:
split("?")|{ deviceName:.[0], ProcessId:.[1], processName:.[2], description:.[3] timeWindow:.[4], numberOfOccurrence:.[5] }

您的代码示例有逗号,对我们有用!

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 2019-02-25
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多