2013-06-24 66 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

是的 - 它确实使'两个'变化(真的,只有一个,但你选择把它们视为不同)。 –