Regex 在文本文件中用双引号替换字符串

Regex 在文本文件中用双引号替换字符串,regex,perl,sed,awk,Regex,Perl,Sed,Awk,我正在使用以下命令: perl -pi -w -e 's/EmployeeDataModel/EmployeeData/g;' *.java 这会改变一些东西,比如: class EmployeeDataModel to class EmployeeData class="EmployeeDataModel" 但是,当采取以下措施时: class EmployeeDataModel to class EmployeeData class="EmployeeDataModel" 它

我正在使用以下命令:

perl -pi -w -e 's/EmployeeDataModel/EmployeeData/g;' *.java 
这会改变一些东西,比如:

class EmployeeDataModel to class EmployeeData
class="EmployeeDataModel" 
但是,当采取以下措施时:

class EmployeeDataModel to class EmployeeData
class="EmployeeDataModel" 
它似乎没有任何作用

有什么解决办法吗?

GNU代码:

而且还可以:

$echo class="EmployeeDataModel" |perl -pi -w -e s/EmployeeDataModel/EmployeeData/g;
class="EmployeeData"
GNU代码:

而且还可以:

$echo class="EmployeeDataModel" |perl -pi -w -e s/EmployeeDataModel/EmployeeData/g;
class="EmployeeData"
你真的确定吗? 这是我的第一个文件:

$ cat perl_test
class EmployeeDataModel
class="EmployeeDataModel"
现在使用perl替换程序:

$ cat perl_test | perl -pi -w -e 's/EmployeeDataModel/Test/g'
class Test
class="Test"
您一定是做错了什么,可能是字符串内容中的输入错误,或者类似的事情。

您真的确定吗? 这是我的第一个文件:

$ cat perl_test
class EmployeeDataModel
class="EmployeeDataModel"
现在使用perl替换程序:

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

您一定是做错了什么,可能是字符串内容输入错误,或者类似的事情。

的确如此。只需将上述两行放在一个文件中,然后尝试脚本。这个问题埋在别处……它一定会起作用!没有理由不起作用,它确实起作用了。只需将上述两行放在一个文件中,然后尝试脚本。这个问题埋在别处……它一定会起作用!没有理由不起作用。好吧,试试看,复制/粘贴它,你会看到它完全按照预期工作。你的问题在别处。好吧,试试,复制/粘贴它,你会发现它完全按照预期工作。你的问题在别处。是的——它确实做出了“两个”的改变(实际上,只有一个,但你选择将它们视为不同的)。是的——它确实做出了“两个”的改变(实际上,只有一个,但你选择将它们视为不同的)。