2013-06-24 64 views
0

我使用下面的命令:替換雙引號字符串文本文件

perl -pi -w -e 's/EmployeeDataModel/EmployeeData/g;' *.java 

這改變的東西,如:

class EmployeeDataModel to class EmployeeData 

不過,考慮這樣的東西時:

class="EmployeeDataModel" 

它似乎沒有做任何事情。

有沒有解決方法呢?

+0

它的確如此。只需將上述兩行放在一個文件中並嘗試腳本。問題被埋在其他地方... – jm666

+0

它必須工作!沒有理由不起作用。 – dAm2K

回答

2

你真正確定嗎? 這是我的第一個文件:

$ cat perl_test 
class EmployeeDataModel 
class="EmployeeDataModel" 
與你的Perl更換

現在:

$ cat perl_test | perl -pi -w -e 's/EmployeeDataModel/Test/g' 
class Test 
class="Test" 

你一定做錯了什麼,也許在你的字符串內容的拼寫錯誤,或類似的東西。

+0

就像我輸入它一樣...... –

+0

好吧,試試吧,複製/粘貼它,你會發現它的工作原理與預期完全一樣。你的問題在別處。 – Jerska

+0

你是對的......非常感謝! –

3

代碼GNU

$echo class="EmployeeDataModel" |sed s/EmployeeDataModel/EmployeeData/g 
class="EmployeeData" 

而且也可以工作:

$echo class="EmployeeDataModel" |perl -pi -w -e s/EmployeeDataModel/EmployeeData/g; 
class="EmployeeData" 
+1

這使得兩個變化? –

+0

是的 - 它確實使'兩個'變化(真的,只有一個,但你選擇把它們視爲不同)。 –