【问题标题】:Get name of the field by value按值获取字段名称
【发布时间】:2020-11-03 09:42:18
【问题描述】:

你好,我有当前的 json

[
  {
    "name": "2020-11-02-160548",
    "value": "ami-asd637ccb094d"
  }
]

我想提取字段名称的名称:当我知道值时:ami-asd637ccb094d。我正在尝试用 jq 来做。预期结果为 2020-11-02-160548。有什么帮助吗?

【问题讨论】:

    标签: json bash select jq


    【解决方案1】:
    .[] | select(.value=="ami-asd637ccb094d") | .name
    

    https://jqplay.org/s/kvahxrql43

    【讨论】:

      【解决方案2】:

      找到解决办法

      jq '.[] | select(.value=="ami-0f5c399636ccb094d") | .name?' | tr -d '""' file.json
      

      【讨论】:

      • 这样不行。首先,file.json 需要作为参数传递给jq;现在它是file.json 的参数(不期望-d 有额外的参数)并且jq 正在等待来自stdin 的输入。要么把file.json放在| tr之前,要么把cat file.json | 放在jq前面。 tr 不需要,jq -r 显示原始输出(即未编码为 JSON),因此没有您要使用 tr 删除的周围引号。
      • 为了稳健和高效,请使用 jq 命令行选项 -r 而不是 tr。
      猜你喜欢
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 2022-01-14
      • 2011-05-24
      相关资源
      最近更新 更多