Linux Perl正则表达式以递归方式替换多个文件组中的字符串,如“*”。php“&*。html";
以下命令不起作用,不执行任何操作:Linux Perl正则表达式以递归方式替换多个文件组中的字符串,如“*”。php“&*。html";,linux,perl,recursion,replace,regexp-replace,Linux,Perl,Recursion,Replace,Regexp Replace,以下命令不起作用,不执行任何操作: sudo find /srv/my/directory -type f -iname '*.htm*' -iname '*.old1' -iname '*.php' | sudo xargs -iX sudo perl -p -i -e 's|\<\?php.*123456.*123456.*\?\>\r?\n\<\?php|<?php|g' 'X' sudo find/srv/my/directory-type f-iname'*.
sudo find /srv/my/directory -type f -iname '*.htm*' -iname '*.old1' -iname '*.php' | sudo xargs -iX sudo perl -p -i -e 's|\<\?php.*123456.*123456.*\?\>\r?\n\<\?php|<?php|g' 'X'
sudo find/srv/my/directory-type f-iname'*.htm*'-iname'*.old1'-iname'*.php'| sudo xargs-iX sudo perl-p-i-e's | \\r?\n\
当指定要查找的几个条件时,默认情况下,它们由隐式的和连接。没有文件可以匹配-iname'*.old1'-和-iname'*.php'
。必须明确指定-或
除非另有说明,perl-p
逐行读取文件,因此它不能匹配\n
当指定要查找的几个条件时,默认情况下,它们由隐式的和连接。没有文件可以匹配-iname'*.old1'-和-iname'*.php'
。必须明确指定-或
除非另有说明,perl-p
逐行读取文件,因此它无法匹配\n您能更详细地描述预期的行为吗?也许提供一个例子?你能更详细地描述预期的行为吗?也许提供一个例子?似乎sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-i-e's | \\r?\n\n我试图扩展该功能以处理其他情况,但是这个regexp不匹配:sudo-find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo-xargs-iX sudo-perl-0777-p-i-e's | \(\r?\n | \ | \#!.\)\n
之后的
被解释为替换定界符。使用另一个字符(请注意,我使用了标准斜杠)。工作方式:sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-I-e's@(\r?\n\n\n\35;\似乎sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-i-e's | \\r?\n\n我试图扩展该功能以处理其他情况,但是这个regexp不匹配:sudo-find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo-xargs-iX sudo-perl-0777-p-i-e's | \(\r?\n | \ | \#!.\)\n
之后的
被解释为替换定界符。使用另一个字符(请注意,我使用了标准斜杠)。工作方式:sudo find/srv/my/directory-type f-iname'*.htm*'-或-iname'*.old1'-或-iname'*.php'| sudo xargs-iX sudo perl-0777-p-I-e's@(\r?\n\n\n\35;\
sudo find /srv/my/directory -type f -iname '*.htm*' -or -iname '*.old1' -or -iname '*.php' | sudo xargs -iX sudo perl -0777 -p -i -e 's|\<\?php.*123456.*123456.*\?\>\r?\n\<\?php|<?php|g' 'X'
sudo find /srv/my/directory -type f -iname '*.htm*' -or -iname '*.old1' -or -iname '*.php' | sudo xargs -iX sudo perl -0777 -p -i -e 's@\<\?php.*123456.*123456.*\?\>(\r?\n|\#\!.*)\<\?php@<?php@gs' 'X'
sudo find /srv/my/directory -type f \
-iname '*.htm*' -or -iname '*.old1' -or -iname '*.php' \
| sudo xargs -iX sudo perl -0777 -p -i \
-e 's/<\?php.*123456.*123456.*\?>\r?\n<\?php/<?php/g' 'X'