首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于编辑yaml usimg awk的bash脚本

用于编辑yaml usimg awk的bash脚本
EN

Stack Overflow用户
提问于 2021-09-21 19:39:30
回答 1查看 50关注 0票数 0

我是新来bash的..在下面提到的一个问题上寻找一些建议。我有下面的配置文件。

impulse.yaml

代码语言:javascript
运行
复制
- job_name: orch
  value: CPST
- group: indalco
  value1: wr
- monitor:
    - name: quid
      cnt: 2
    - name: kwid
      cnt: 3
    - name: knid
      cnt: 4
- interval: 3m
- static_configs:
   - targets: targets1
      labels:
          group: BSA
          gid: geo
          dc: lba  

如果我运行bash脚本,它应该会像下面这样更新

需要更新impulse.yaml

代码语言:javascript
运行
复制
- job_name: orch
  value: CPST
- group: indalco
  value1: wr
- monitor:
    - name: quid
      cnt: 2
    - name: kwid
      cnt: 3
    - name: knid
      cnt: 4
    - name: orch_vm1
    - name: orch_vm2
- interval: 3m
- static_configs:
   - targets: targets1
      labels:
          group: BSA
          gid: geo
          dc: lba 

-bash脚本

代码语言:javascript
运行
复制
getline() {
 awk '
 BEGIN { ln=1; find_monitor=0; }
 (find_monitor==1 && $0~/^[a-z]/) { exit }
 ($0~/^monitor:/) { find_monitor = 1 ;ln = NR }
 END { print ln }' ${1}
}

word="monitor" # no use of this variable
echo $line
filename="impulse.yaml"

for vm_name in orch_vm1 orch_vm2; 
  do
   line=`getline $filename $word`
   sed -i -e ${line}"a\    - name: \"${vm_name}\" " $filename

现在的代码是在像below..but这样的yaml文件的监视器部分的开头进行更新的,它需要在监视器部分的末尾在间隔部分之前进行更新。请告知可以应用的模式匹配技术。

代码语言:javascript
运行
复制
- job_name: orch
      value: CPST
    - group: indalco
      value1: wr
    - monitor:
        - name: orch_vm1
        - name: orch_vm2
        - name: quid
          cnt: 2
        - name: kwid
          cnt: 3
        - name: knid
          cnt: 4
    - interval: 3m
    - static_configs:
       - targets: targets1
          labels:
              group: BSA
              gid: geo
              dc: lba 
EN

回答 1

Stack Overflow用户

发布于 2021-09-21 19:47:42

我同意@LéaGris的评论。像YAML这样的结构化数据应该通过其定义的语法来解释。传统的命令行工具无法做到这一点。yq是最接近的类比

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69274689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档