Tabs 让Perl正则表达式在macOS中匹配换行符,后跟制表符
我在macOS.plist文件中有以下两行:Tabs 让Perl正则表达式在macOS中匹配换行符,后跟制表符,tabs,newline,Tabs,Newline,我在macOS.plist文件中有以下两行: <key>Disabled</key> <true/> 注意:我不想将Disabled更改为Disabled,这只是为了显示匹配正在工作 我知道第二行以\t开头,我可以将其匹配/替换为: perl -pi -w -e 's/Disabled<\/key>\n/DISABLED<\/key>\n/g' file perl -pi -w -e 's/\t<true/\t
<key>Disabled</key>
<true/>
注意:我不想将Disabled
更改为Disabled
,这只是为了显示匹配正在工作
我知道第二行以\t
开头,我可以将其匹配/替换为:
perl -pi -w -e 's/Disabled<\/key>\n/DISABLED<\/key>\n/g' file
perl -pi -w -e 's/\t<true/\t<false/g' file
非常感谢您的帮助。看来我对Perl的理解非常有限 在进一步挖掘之后,我现在意识到,在我使用Perl的代码中,是在逐行读取文件。我需要做的是指示Perl一次性读取该文件,或者以另一种方式“slurp”该文件。使用
-0
将Perl置于模式
我的原始非工作代码:
perl -pi -w -e 's/Disabled<\/key>\n\t<true/Disabled<\/key>\n\t<false/g' file
为了更进一步,我将匹配模式中的\n\t
替换为(\s*)
,以匹配任何空格
、选项卡
或换行符
零次或多次,并将替换模式中的\n\t
替换为$1
:
perl -0pi -w -e 's/Disabled<\/key>(\s*)<true/Disabled<\/key>$1<false/g' file
perl-0pi-w-e已禁用(\s*)
perl -pi -w -e 's/Disabled<\/key>\n\t<true/Disabled<\/key>\n\t<false/g' file
perl -0pi -w -e 's/Disabled<\/key>\n\t<true/Disabled<\/key>\n\t<false/g' file
perl -0pi -w -e 's/Disabled<\/key>(\s*)<true/Disabled<\/key>$1<false/g' file