使用 awk 从 yaml 文件中提取密钥

使用 awk 从 yaml 文件中提取密钥

假设我有一个像这样的 yaml 文件:

foo:
  bar: 1

env:
  firstVar: true
  secondVar: 20
  aa_thirdVar: 'hello'
  aa_fourthVar: false

并且我需要获取env键下的键(带有前缀的键除外)aa_作为 bash 数组,以便在 bash 脚本中使用该数组。

答案1

使用yq命令https://kislyuk.github.io/yq/一个合适的工具来解析 YAML 格式的文件,你可以这样做:

yq -r '.env|to_entries[]|
    if (.key|test("^[^a][^a][^_]*$")) then
        ( .key + "=" + (.value | @sh) )
    else
        empty
    end
' infile

输出:

firstVar=true
secondVar=20

现在你只需要export这些变量集

export $(yq ... )

或创建一个数组:

IFS=$'\n' arr=( $(yq ... ) )

在该( .key + "=" + (.value | @sh) )部分中,它连接使用函数生成的键值对,to_entries并使用@sh语法(称为“格式字符串和转义”)来提供 POSIX sh shell 转义格式

相关内容