我有一个 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_version: "~> 4"
supports:
- platform: aws
名称和网址值可以是随机的,但始终为 depends: name, url
。
我在第一行用 sed 尝试了这个,但没有用:
sed -i '^depends:' test.yml
答案 0 :(得分:2)
使用这个(我已经删除了 Option Explicit
Sub Clean1()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
ws.Range("D1:D2").Formula = "=CLEAN(RC[-3])"
ws.Range("E1:E2").Formula = "=CLEAN(RC[-3])"
ws.Range("D1:E2").Copy
ws.Range("A1:B2").PasteSpecial Paste:=xlPasteValues
ws.Range("D:E").Delete Shift:=xlToLeft
Set ws = Nothing
End Sub
,当你对结果满意时可以重新添加它):
-i
详情:
sed '/^depends:/{N;N;d}' test.yml
匹配三行中的第一行/^depends:/
将上述模式匹配时要执行的命令组合起来{…}
分隔连续的命令;
将以下行附加到当前模式空间(匹配发生时您正在编辑的行);这发生了两次,导致模式空间保存与模式匹配的行,加上以下两行N
删除模式空间答案 1 :(得分:1)
请尝试使用 sed -i '/^depends:/d' test.yml
。
答案 2 :(得分:1)
这样做:
sed '/^depends:/,/url:/d' your_file
它删除所有出现的行以及与两个模式匹配的行之间的行
^depends:
和 url:
一旦你确认它做了你想要的,只需添加 -i
来做
就地替换:
sed -i '/^depends:/,/url:/d' your_file
答案 3 :(得分:1)
使用理解 YAML 的工具,例如 yq:
yq eval 'del(.depends)' infile.yaml