2015-11-11 50 views
0

我们试图使一些文件名在大型javascript代码库中保持一致。我们想要骆驼案件的所有文件名称,但我们还需要骆驼案件的“要求”的声明。只替换特定单词后面的部分文字

所以任意需要声明应该改变这样的:到目前为止

// 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脚本几乎作品:

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

但是,这会产生是:

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

我们如何制作这个sed脚本(或s还有其他的方法)只需要在需求调用中输入文本?

回答

2

如果你想改变每个字母遵循/(即没有要求路径与Src或东西开始),然后可以区分你想改变该行的部分:

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

这对我的作品在您的示例输入。

我刚刚尝试了一个变体,以允许使用单引号而不是模式中的斜杠。如果原始文件包含“require('Src/js/Shared/modules/ProgressBar')”,那么这将起作用“

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