Javascript 仅替换特定单词后的部分文本

Javascript 仅替换特定单词后的部分文本,javascript,sed,Javascript,Sed,我们正试图使一些文件名在一个大的javascript代码库中保持一致。我们希望对所有文件名采用camel大小写,但也需要对“require”语句采用camel大小写 因此,任何任意的require语句都应该这样更改: // before var PurchaseProgressBar = require('src/js/Shared/modules/ProgressBar'); // after - camel cased each part of the path var PurchasePr

我们正试图使一些文件名在一个大的javascript代码库中保持一致。我们希望对所有文件名采用camel大小写,但也需要对“require”语句采用camel大小写

因此,任何任意的require语句都应该这样更改:

// before
var PurchaseProgressBar = require('src/js/Shared/modules/ProgressBar');
// after - camel cased each part of the path
var PurchaseProgressBar = require('src/js/shared/modules/progressBar');
到目前为止,我们有一个几乎可以正常工作的sed脚本:

但这产生的是:

//  "var PurchaseProgressBar" was also changed! but shouldn't be
var purchaseProgressBar = require('src/js/shared/modules/progressBar');

我们如何使这个sed脚本(或其他方法)只包含require调用中的文本?

如果您要更改的每个字母都遵循一个/(即没有require路径以Src或其他什么开头),则可以区分您要更改的行的部分:

sed -e "/require/ s=\/\b\(.\)=/\l\1=g"
这对我来说适用于您的示例输入

我只是尝试了一种变体,允许在模式中使用单引号而不是斜杠。如果原始文件中包含“require('Src/js/Shared/modules/ProgressBar'),则此操作有效

sed -e "/require/ s=\/\b\(.\)=/\l\1=g"
sed -e "/require/ s=\(['\/]\)\b\(.\)=\1\l\2=g"