我的文件类似于test.yaml文件,文件内容如下文所示。
servers:
- uri: "http://demo.nginx1.com/status"
name: "NGinX Monitor1"
- uri: "http://demo.nginx2.com/status"
name: "NGinX Monitor2"
我想删除 - uri line和immediate next line(以name :)开头,其中host name = demo.nginx1.com。 我想要像下面这样。
servers:
- uri: "http://demo.nginx2.com/status"
name: "NGinX Monitor2"
我绑在下面.. cat test.yaml | grep -v demo.nginx1.com | grep -v Monitor1>> test_back.yaml mv test_back.yaml test.yaml
我得到了预期。但它正在重新创建文件而我不想重新创建文件
请帮助我使用合适的命令,我可以使用..
答案 0 :(得分:1)
使用GNU sed
sed '/demo.nginx1.com/,+1 d' test.yaml
servers:
- uri: "http://demo.nginx2.com/status"
name: "NGinX Monitor2"
对于in-place
替换,请将-i
标记添加为-i.bak
sed -i.bak '/demo.nginx1.com/,+1 d' test.yaml
要查看就地替换: -
cat test.yaml
servers:
- uri: "http://demo.nginx2.com/status"
name: "NGinX Monitor2"
答案 1 :(得分:0)
因为我不喜欢使用正则表达式来破解你可以解析的东西 - 这就是我如何使用<li>
<a class="btn navbar-button" href="#" style="display: block;">Button</a>
</li>
和perl
模块解决它:
YAML