【发布时间】:2017-10-13 04:47:17
【问题描述】:
对 sed 不太熟悉,我正在尝试删除模式前的两行(超时值和空行),然后用更新的超时重新插入两行。
这是我拥有的 yaml 文件的一部分:
- id: phase1
blahblahbal
timeout: 720
- id: phase2
blahblahbalh
timeout: 1800
我正在尝试将第一次超时更新为“900”。
这是我用 grep 完成的:
grep -v "$(grep -B 2 'id: phase2' test.yaml | grep -v 'id: phase2')" test.yaml > test.yaml
然后使用 sed 插入更新的值。这是有效的,但 grep 看起来不太好。有没有办法在模式前用 sed 删除两行?
第一次 sed/grep 后的预期输出:
- id: phase1
blahblahbal
- id: phase2
blahblahbalh
timeout: 1800
预期的最终输出:
- id: phase1
blahblahbal
timeout: 900
- id: phase2
blahblahbalh
timeout: 1800
【问题讨论】:
-
显示您的预期输出。
-
相对于模式删除是困难的,当模式遵循需要删除的内容时更是如此。
-
@JonathanLeffler 该评论有何帮助?
-
您的预期输出没有删除行?您刚刚更换了号码。那是你真正想要的吗?
-
这是最终输出。