【发布时间】:2021-02-23 23:33:58
【问题描述】:
我正在尝试使用awk 来修改 yml 文件。我想要的逻辑是,如果键 specialKey 已经存在与子键 subkey 则什么都不做,否则我想在特殊键下插入子键(及其关联值)。例如,如果我的文件 mine.yml 看起来像
blah:
moreStuff:
...
specialKey:
A:
...
B:
...
subKey:
...
C:
...
...
然后什么都不做,因为specialKey 已经存在,subkey 作为子键。但如果它丢失了,那么我希望插入specialKey: ...。我无法理解如何使用 awk,这是我的第一次尝试:
awk '1;/specialKey:/{foundSpecialKey=1;}; foundSpecialKey && /subKey:/{foundSubKey=1}; foundSpecialKey && foundSubkey!=1 && //{foundLifecycle=0; foundResults=0; print "my content";}' mine.yml
但是即使specialKey: ... subKey: ... 已经存在,它仍然会插入到内容中。我该如何继续?
【问题讨论】:
-
不要。使用理解 yaml 的工具,例如几个(不相关且彼此不兼容,唉)yq 程序之一。
-
同意找到一个 yaml 工具,但您的初始条件
1;对于读取的每一行都评估为 true,因此将打印每一行(可能重复)。祝你好运。