【发布时间】:2016-08-29 23:43:53
【问题描述】:
我在多个文件中都有这个
vars_files:
- "{{inventory_dir}}/common/vars/{{type1}}.yml"
- "{{inventory_dir}}/common/vars/{{type2}}.yml"
- "{{inventory_dir}}/common/vars/{{type3}}.yml"
- "{{inventory_dir}}/common/vars/{{type4}}.yml"
roles:
bla bla
线条路径可以变化,因此它不是恒定的
现在每次我都必须手动将其更改为多个文件。我正在寻找可以使用 sed 替换的东西。
是否有可能我有 template 文件,其中包含我想要替换的代码
vars_files:
- "{{inventory_dir}}/common/vars/{{type22}}.yml"
- "{{inventory_dir}}/common/vars/{{type22}}.yml"
- "{{inventory_dir}}/common/vars/{{type32}}.yml"
- "{{inventory_dir}}/common/vars/{{type42}}.yml"
然后 sed 在文件中查找上述模式并在同一位置替换为上述模板。
我的 sed 知识只是替换多个文件中的某一行代码,例如
find files/ -type f -name "*.yml" -exec sed -i -re 's/\{\{inventory_dir\}\}\/vars\/common\.yml/\{\{inventory_dir\}\}\/common\/vars\/common.yml/g' {} \;
但我不确定如何处理多行。
我正在考虑在 vars_files 和 roles: 之间寻找线,然后用模板替换,但我不确定如何阅读
【问题讨论】:
-
您搜索过
[sed] multiline replace吗?对此有 99 个 Q/As,但它确实是解决您问题的脆弱解决方案。不建议。您肯定会在此处通过其他一些 Q/As 找到替代方案。祝你好运。