如何从这个json代码中只获取值?

时间:2018-01-23 20:38:11

标签: json jq

我希望以字符串*.md的形式列出所有值,无论它们出现在何处。如何在jq

中实现这一目标
[
  {
    "Home Page": "index.md"
  },
  {
    "Chapters": [
      {
        "Foreword": "Aforeword.md"
      },
      {
        "Chap1": "ch001.md"
      },
      {
        "Chap2": "ch002.md"
      }
    ]
  }
]

1 个答案:

答案 0 :(得分:2)

这是一个扫描所有* .md字符串的解决方案:

jq -r '.. | strings | select(endswith(".md"))'

输出:

index.md
Aforeword.md
ch001.md
ch002.md

如果您只想检查作为键值出现的字符串:

.. | objects | .[] | strings | select( endswith(".md"))

您可能希望修改选择标准以允许" .MD"等等。因此您可能希望使用test("\\.md$"; "i")