【问题标题】:Replace a string in second quotations? [closed]替换第二个引号中的字符串? [关闭]
【发布时间】:2021-03-25 00:17:39
【问题描述】:

我的 swagger.json 文件中有一行可以用 grep host swagger.json 输出:

  "host": "there.can.be.nothing.or.anything.here",

所以我想替换第二个引号 there.can.be.nothing.or.anything.here 中的字符串,我只是把那个值作为一个例子,我可能会在这里放空引号,比如 "" 或某个域 "example.com" 重要的是我替换了其中的所有内容第二个引号。

如果我想用字符串 some.domain.com 替换它(可能使用 sed 命令?):

我会大摇大摆地编辑这一行:

  "host": "some.domain.com",

【问题讨论】:

  • 你试过this吗?

标签: regex bash


【解决方案1】:

这是一个 json 文件,所以使用 jq。

jq '.host="some.domain.com"' swagger.json

如果您出于某种原因不能使用 json,请使用 sed:

sed -ri 's/(^.*host\": \")(.*)(\".*$)/\1some.domain.com\3/' swagger.json

将主行分成三部分,并用第一行替换第一行,然后是修改后的文本和第三部分。

【讨论】:

  • sed 命令有效!谢谢! jq 命令不起作用(我使用的测试文件只有那一行,也许这就是原因)而且我不确定将运行这些命令的 docker 容器是否有 jq,jq 是 bash 的一部分吗?
  • 是的,文件的结构对于 jq 命令很重要。
猜你喜欢
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多