2015-11-11 78 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"