获取文本文件(yaml)中的键值,如果它在树中嵌套其他值



我需要从属性中具有特定标签的yaml文件中获取所有节点名称。这是 YAML 文件的结构:

node1:  
    description: "App Server"
     ******************** /many lines/ ********
    tags:  "web_server,file_server"
node2:  
    description: "Server"
    ******************** /many lines/ ******** 
    tags: "nginx,nginx_a,nginx_b"
node3:
    description: "Server"
    ******************** /many lines/ ******** 
    tags: "application1,application2"
    and so on 

如何获取内部有标签"nginx"的节点名称?我们可以从末尾读取文件,如果我们有标签名称,而不是得到第一个模式^[a-z],然后再次开始搜索标签。

tac file.yaml | awk '/tag/&&/tag_name/{f=1;next} /^[a-z]/{ if (f) {print;f=0 } }' | sed 's/:r//g')

我用tac,awk和sed做了这件事。tac - 还原文件。awk使所有逻辑。sed 删除冒号,最后删除/r。

相关内容

  • 没有找到相关文章

最新更新