Sed 从yaml文件中删除匹配行
我有一个yaml文件:Sed 从yaml文件中删除匹配行,sed,yaml,Sed,Yaml,我有一个yaml文件: version: xxx description: xxx inspec_version: "~> 4" depends: - name: yyy url: random-url supports: - platform: aws 如何将其从文件中删除 depends: - name: yyy url: random-url 因此,该文件将如下所示: version: xxx description: xxx inspec_versi
version: xxx
description: xxx
inspec_version: "~> 4"
depends:
- name: yyy
url: random-url
supports:
- platform: aws
如何将其从文件中删除
depends:
- name: yyy
url: random-url
因此,该文件将如下所示:
version: xxx
description: xxx
inspec_version: "~> 4"
supports:
- platform: aws
名称和url值可以是随机的,但始终是取决于:名称、url
我在第一行尝试了sed,但没有成功:
sed -i '^depends:' test.yml
请尝试使用
sed-i'/^dependens:/d'test.yml
这样做可以:
sed '/^depends:/,/url:/d' your_file
它将删除所有出现的线以及与这两种图案匹配的线之间的线
^取决于:
和url:
一旦您确认它做了您想要的事情,只需添加-i
即可
替换到位:
sed -i '/^depends:/,/url:/d' your_file
使用此选项(我已删除了-I
,您可以在对结果满意时将其添加回):
sed'/^dependens:/{N;N;d}test.yml
详情:
匹配三行中的第一行/^dependens://
当上述模式匹配时,将执行命令{…}
代码>分隔连续命令
将以下行追加到当前模式空间(匹配发生时您正在编辑的行);这种情况发生两次,导致模式空间中包含与模式匹配的行,以及下面的两行N
删除图案空间d
yq评估'del(.dependens)'infle.yaml
谢谢,你知道当这3行匹配时我如何删除它们吗?