【问题标题】:How to grep the specific field value from json string using shell script [duplicate]如何使用shell脚本从json字符串中grep特定字段值[重复]
【发布时间】:2017-02-07 00:26:34
【问题描述】:

以下是文件中可用的 JSON 字符串,我需要从中提取 shell 脚本中 status 的值。

预期输出:status=success

response.json

{"eventDate":null,"dateProccessed":null,"fileName":null,"status":"success"}

如果您需要任何信息,请告诉我

【问题讨论】:

    标签: json bash shell


    【解决方案1】:

    你可以试试sed:

    sed -n 's|.*"status":"\([^"]*\)".*|status=\1|p' response.json
    

    【讨论】:

    • 这如何产生预期的输出status=success
    • @hek2mgl \1 将捕获success。这不是一个绝妙的解决方案,但它会起作用。
    • 我忽略了输入 json 是一个单行文档。 sed 在这里并不出色,但你是对的,它适用于这种情况。
    【解决方案2】:

    查看jq。这是一个非常方便的 json 解析器。

    如果您只想提取状态,可以执行以下操作:

    jq -r '.status' response.json
    
    # output
    success
    

    您也可以格式化输出以遵循您想要的结果。

    jq -r '"status=\(.status)"' response.json
    
    # output
    status=success
    

    【讨论】:

    • 您好,感谢您的回复。我试过这个选项,我们的 unix 风格不支持 jq 命令。有没有其他办法?
    猜你喜欢
    • 1970-01-01
    • 2018-01-27
    • 2012-11-04
    • 2018-02-16
    • 2017-03-12
    • 2016-09-03
    • 2019-10-08
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多