jqを使用して、json配列から部分的に一致するクエリを含む配列を取得します。

jqを使用して、json配列から部分的に一致するクエリを含む配列を取得します。

["a", "b", "c"], ["abc", "e", "f"]次のjsonデータと「a」が部分的に一致するクエリで与えられた場合、jqを使用して部分的に一致するクエリ「a」を含む配列をどのように取得できますか?

[
    ["a", "b", "c"],
    ["abc", "e", "f"],
    ["g", "h", "i"]
]

jq '. [] | select(index("a"))'正確に一致するものだけをインポートしますが、["a", "b", "c"]「abc」に「a」が含まれているのでインポートしたいと思います。["abc", "e", "f"]

ベストアンサー1

以下とは少し異なるアプローチ漕ぐ船は何を持っていったの?:

jq 'map(select(any(contains("a"))))' file

最も内側のテストは各文字列の部分文字列をテストしますa。サブ配列の文字列にが含まれている場合は、aそのサブ配列が選択されます。map最上位配列のすべてのサブ配列に選択を適用します。

結果は、1つ以上の部分文字列を含む要素を含むサブ配列の最上位配列ですa

[
  [
    "a",
    "b",
    "c"
  ],
  [
    "abc",
    "e",
    "f"
  ]
]

おすすめ記事