如果给定字符串在 YAML 中匹配,则使用 yq 获取所有键值

Get all keys values using yq if a given string matches in YAML

我有以下 yaml 文件,如果值中存在 abc 字符串,我将尝试获取所有键值对。

a: abcsdf
b: hyuabc
c: iopabc
d: mnhbvgc

预期输出:

a: abcsdf
b: hyuabc
c: iopabc

我的尝试:

yq eval '.[] | select(. == "*abc*") test.yaml

真是奇怪,select and del的功能完全不同。 while select returns filter的结果作为数组元素,删除returns map

yq eval 'del( .[] | select( . != "*abc*" ) )' yaml