目前,我正在尝试使用mikefarah/yq处理器(Ubuntu计算机上的版本3.1.2)在YAML文件中交换字符串,但在双引号中使用双引号,如下所示:
config:
app:
name: "string"
因此,我首先尝试通过以下方式为我解决经典问题:
yq w -i appconfig.yml config.app.name "exchangedstring"
但是字符串中不包含引号。
config:
app:
name: exchangedstring
我已经尝试过多次对字符串进行转义以获得所需的结果,但是不幸的是,所有事情都不是所需的结果。例如,如果我将字符串设置为三重字符串(类似“””之类的字符),则引号被设置,但是在其周围有一个单引号,它看起来像这样:
config:
app:
name: '"exchangedstring"'
但是我想要的结果是这样的:
config:
app:
name: "exchangedstring"
我还尝试了不同变体形式的反斜杠(例如“ \” exchangedstring \“”或'\“ exchangedstring \”')。不幸的是,所有错误的结果。 我不能排除以后将解析yaml文件的应用程序不会与该位置的字符串混淆的可能性,因此对我来说,绝对必要的是该字符串在该位置的引号中。
有人知道我怎么仍然只能得到一个简单的引号吗? 预先非常感谢。
答案 0 :(得分:3)
mikefarah/yq的最新版本(从v3开始)引入了--style
option,可让您对值进行自定义格式。例如您可以使用--style=double
对值进行双引号
yq w -i appconfig.yml config.app.name --style=double exchangedstring