首页 > 解决方案 > 使用 sed 在缩小的 js 文件中替换两个已知字符串之间的未知字符串

问题描述

我有一个缩小的 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 替换前缀和后缀之间的字符串

标签: jsonsed

解决方案


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

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


推荐阅读