yq处理带引号的字符串

时间:2020-06-04 15:53:29

标签: yaml yq

目前,我正在尝试使用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文件的应用程序不会与该位置的字符串混淆的可能性,因此对我来说,绝对必要的是该字符串在该位置的引号中。

有人知道我怎么仍然只能得到一个简单的引号吗? 预先非常感谢。

1 个答案:

答案 0 :(得分:3)

mikefarah/yq的最新版本(从v3开始)引入了--style option,可让您对值进行自定义格式。例如您可以使用--style=double对值进行双引号

yq w -i appconfig.yml config.app.name --style=double exchangedstring