【问题标题】:Replace a unknown string between two known string in an minified js file using sed使用 sed 在缩小的 js 文件中替换两个已知字符串之间的未知字符串
【发布时间】:2020-12-29 20:01:58
【问题描述】:

我有一个缩小的 js 文件,其中包含一些服务器 url,我需要根据另一个文件中的 url 更改该 url。

{serverUrl:"existingUrl"}

需要更改的url未知,但我知道它是JS对象的一部分,所以我有钥匙。

我有以下代码,它似乎完成了大部分必需的部分,但它也从 JS 文件中删除了大量代码,这不是我想要的。

systemAuthUrl="someurl"
prefix='serverUrl:"'
suffix='"'

find ./prod/build/js/ -type f -name "bundle.*.js" -exec sed -i "s#$prefix.*$suffix#$prefix$systemAuthUrl$suffix#g" {} \;

如何修改上述命令,只用变量 systemAuthUrl 替换前缀和后缀之间的字符串

【问题讨论】:

  • 你能展示你输入文件的样本吗

标签: json sed


【解决方案1】:

匹配是 sed 是贪婪的,这意味着它将匹配所有内容,直到文件中的最后一个 "

您可以将.* 替换为[^\"]+,使其匹配除引号之外的任何内容。

【讨论】:

  • 对我不起作用,不能替换任何东西 `prefix='serverUrl:"' seperator='[^"]+' suffix='"' find ./export/js/ -type f -name "bundle.*.js" -exec sed -i "s#$prefix$seperator$suffix#$prefix$systemAuthUrl$suffix#g" {} \; `
  • 它不是分隔符。它是您的字符串的主体: "s#$prefix[^\"]+$suffix#$prefix$systemAuthUrl$suffix#g"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 2018-02-04
  • 2013-05-03
相关资源
最近更新 更多