如何编写/格式化YAML文件以在根级元素上方添加新行?



我有一个Ruby on Rails配置的YAML文件,格式如下

default: &default
api:
my_id: test
my_secret: test
development:
<<: *default
api:
domain: some domain
sso:
url: some_url
qa:
<<: *default
api:

我想写一个脚本,将添加一个新的行以上的所有顶级元素。例如,当脚本或命令在上面运行时,它将生成

default: &default
api:
my_id: test
my_secret: test
development:
<<: *default
api:
domain: some domain
sso:
url: some_url
qa:
<<: *default
api:

但是当我运行这个命令

perl -pi -e 's/^^[ ](.*)$/n$1/g' yamlfile.yml

它在每一行的上方添加一个新行,而不仅仅是根元素。在顶层元素上方添加这样一行的正确方法是什么?

这应该达到你想要的效果:

perl -pi -e 's/^S/n$&/' yamlfile.yml

^^是多余的,而[ ]与您想要匹配的相反。我想你的意思是^[^ ],这是更好的,但在文件的顶部插入一行。

解决方案:

perl -i -pe's/^(?=S)/n/ if $. != 1' yamlfile.yml

一次读取整个文件的解决方案:

perl -i -0777pe's/nK(?=S)/n/g' yamlfile.yml

以上都不检查是否存在空白行。另一方面,下面的代码规范了顶级元素前面的空行:

perl -i -0777pe's/^n+//; s/nKn*+(?=S)/n/g' yamlfile.yml

最新更新