Regex 用perl替换文件中的字符串
我有一个大约10台服务器的列表,我想在所有10台服务器中更改一个字符串 我已经编写了一个脚本,它查看文件并带有一个循环,应该使用Regex 用perl替换文件中的字符串,regex,perl,shell,Regex,Perl,Shell,我有一个大约10台服务器的列表,我想在所有10台服务器中更改一个字符串 我已经编写了一个脚本,它查看文件并带有一个循环,应该使用perl-I-pe将行/opt/nimsoft/bin/niminit”““start”更改为\opt/nimsoft/bin/niminit”““start”(添加一个注释) 我很难逃离/,我已经尝试了\and \Q和\E。有什么想法吗 for i in `cat $file` do echo "Disable application on star
perl-I-pe
将行/opt/nimsoft/bin/niminit”““start”
更改为\opt/nimsoft/bin/niminit”““start”
(添加一个注释)
我很难逃离/,我已经尝试了\and \Q和\E。有什么想法吗
for i in `cat $file`
do
echo "Disable application on startup"
oldstring=start /opt/nimsoft/bin/niminit "" "start"
newstring=#start /opt/nimsoft/bin/niminit "" "start"
ssh -t $i sudo perl -p -i -e 's/oldstring/newstring/g' /etc/rc.tcpip
# /etc/rc.tcpip:start /opt/nimsoft/bin/niminit "" "start"
echo "==============================================="
done
如果您使用
s{}{}
而不是s//
,您就不必担心是否会跳出正斜杠
如果要匹配的字符串尚未注释,则以下内容会在该字符串之前添加注释:
perl -i -pe 's{(?<!#)(?=start /opt/nimsoft/bin/niminit "" "start")}{#}' /etc/rc.tcpip
perl-i-pe的{(?perl将允许使用/以外的分隔符。您可以尝试使用~或{}对。此外,sed可能比perl脚本更易于使用
perl -i -pe 's{(?<!#)(?=start /opt/nimsoft/bin/niminit "" "start")}{#}' /etc/rc.tcpip