我正在尝试在正则表达式中为所有根yaml条目及其值匹配。因此,仅考虑具有值的条目(不与任何嵌套条目匹配)。我一直在弄乱它,但无济于事。谢谢!
如此例所示:
metadata:
url: "https://www.google.com"
booleanvalue: 'false'
tls:
host:
google_net: "google.net"
secret:
big_secert_net: "cert"
API_HOST: 'https://api.test.com'
DOMAIN: 'api.domain'
METRIC_ENVIRONMENT: 'test'
正则表达式将返回此匹配项:
booleanvalue: 'false'
API_HOST: 'https://api.test.com'
DOMAIN: 'api.domain'
METRIC_ENVIRONMENT: 'test'
答案 0 :(得分:0)
grep -E '^[^\r\n]+:[^\S\r\n]+[^[{\r\n][^\r\n]*$' test.yaml
我在做什么:
^[^\r\n]+:
匹配键位于行首[^\S\r\n]+
匹配内联空格(某些实现为此提供\h
)。冒号后必须至少有一个空格字符。[^[{\r\n][^\r\n]*$
匹配内容。确保它以不在同一行上的[
或{
开头(那些将开始嵌套YAML对象)。然后,将所有内容匹配到该行的结尾。