4

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

有谁知道我如何仍然只能得到一个简单版本的引号?非常感谢您提前。

4

1 回答 1

5

mikefarah/yq的最新版本(v3 及更高版本)引入了一个--style选项,允许您对值进行自定义格式设置。例如,您可以使用--style=double双引号的值

yq w -i appconfig.yml config.app.name --style=double exchangedstring
于 2020-06-04T18:41:23.340 回答