我有一個用于 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
它在每一行之上添加一個新行,而不僅僅是根元素。在頂級元素之上添加這樣一個新行的正確方法是什么?
uj5u.com熱心網友回復:
這應該達到你想要的:
perl -pi -e 's/^\S/\n$&/' yamlfile.yml
uj5u.com熱心網友回復:
^^是多余的,與[ ]您要匹配的相反。我認為您的意思是^[^ ],這更好,但會在檔案頂部插入一行。
解決方案:
perl -i -pe's/^(?=\S)/\n/ if $. != 1' yamlfile.yml
一次讀取整個檔案的解決方案:
perl -i -0777pe's/\n\K(?=\S)/\n/g' yamlfile.yml
以上都沒有檢查是否存在現有的空行。另一方面,以下規范化了頂級元素之前的空白行:
perl -i -0777pe's/^\n //; s/\n\K\n* (?=\S)/\n/g' yamlfile.yml
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/462034.html
上一篇:Terraform資源已更改
下一篇:將陣列插入多維結構
