【问题标题】:Bash script to filter JSON text用于过滤 JSON 文本的 Bash 脚本
【发布时间】:2017-10-13 13:09:32
【问题描述】:

我有以下 JSON 文件:

{
  "error": 0,
  "data": {
    "0": {
      "orderid": "40007600",
      "price": "9.99",
      "listingname": "iPhone 8",
      "smallphoto": "https://images-eu.ssl-images-amazon.com/images/I/51b5iaLTjgL._SL160_.jpg",
      "photo": "https://images-eu.ssl-images-amazon.com/images/I/51b5iaLTjgL.jpg"
    },
    "1": {
      "orderid": "40007598",
      "price": "9.99",
      "listingname": "iPhone 8 Plus",
      "smallphoto": "https://images-eu.ssl-images-amazon.com/images/I/51CVLqsSNkL._SL160_.jpg",
      "photo": "https://images-eu.ssl-images-amazon.com/images/I/51CVLqsSNkL.jpg"
    },
    "4": {
      "orderid": "40007595",
      "price": "9.39",
      "listingname": "Nadelflaschen",
      "smallphoto": "https://images-eu.ssl-images-amazon.com/images/I/41OHDP2rAeL._SL160_.jpg",
      "photo": "https://images-eu.ssl-images-amazon.com/images/I/41OHDP2rAeL.jpg"
    },
  }
}

如何使用 bash 脚本过滤所有内容,以便将“smallphoto”的所有图像 URL 放入文本文件中?

f.e. https://images-eu.ssl-images-amazon.com/images/I/41OHDP2rAeL.SL160.jpg 来自“Nadelflaschen”

我尝试了 awk 和 jq 命令。但我只是转储以了解 jq 语法。

awk 是可能的,但我只能得到带有反斜杠的未过滤链接,这不起作用。

【问题讨论】:

  • 欢迎来到 StackOverflow。不幸的是,这既不是教程网站,也不是网络搜索替代品。我们可以帮助解决certain problems,但首先是put some efforts您的工作,包括。初级(re)search。大多数新手的问题都不是唯一的,并且已经回答了多次。

标签: json bash shell jq data-extraction


【解决方案1】:
jq '.data[] | .smallphoto' input.json

产量:

"https://images-eu.ssl-images-amazon.com/images/I/51b5iaLTjgL._SL160_.jpg"
"https://images-eu.ssl-images-amazon.com/images/I/51CVLqsSNkL._SL160_.jpg"
"https://images-eu.ssl-images-amazon.com/images/I/41OHDP2rAeL._SL160_.jpg"

这里的关键是.[].data[].data|.[] 的缩写形式)可以与 JSON 对象一起使用,而不仅仅是数组。

【讨论】:

    【解决方案2】:

    这是另一个过滤器,无论嵌套多深,它都能找到.smallphoto

    .. | .smallphoto?//empty
    

    Try it online!

    样本运行(假设data.json 中的样本数据已更正)

    $ jq -M '.. | .smallphoto?//empty' data.json
    "https://images-eu.ssl-images-amazon.com/images/I/51b5iaLTjgL._SL160_.jpg"
    "https://images-eu.ssl-images-amazon.com/images/I/51CVLqsSNkL._SL160_.jpg"
    "https://images-eu.ssl-images-amazon.com/images/I/41OHDP2rAeL._SL160_.jpg"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多