Erw*_*ijk 7 regex perl replace
我需要在多个css文件中替换一些文本,但是第一次出现.
我试过更换:
perl -pi -e 's/(width:).*;/$1 100%;/' filename.css
Run Code Online (Sandbox Code Playgroud)
但是,即使我没有使用/ g修饰符,这也会在文件中每次出现'width:'后替换该值.我在最近的Ubuntu机器上运行它.
没有人解决你的实际头衔问题的含义.我建议采用与此处相同的方法,仅修改:
perl -pie '!$subbed{$ARGV} and s/(width:).*;/$1 100%;/ and $subbed{$ARGV}++' *.css
Run Code Online (Sandbox Code Playgroud)
un-dimensioned $ARGV是当前文件的名称.因此,对于每个文件,您只替换第一个匹配项."glob" *.css将发送多个文件.如果您执行其他人建议的标量切换,您将仅使用该模式修改第一个文件中的第一个匹配项.(虽然,也许这就是你想要的.)
您可以在第一个之后停止替换:
perl -pi -e '$a=1 if(!$a && s/(width:).*;/$1 100%;/);' filename.css
Run Code Online (Sandbox Code Playgroud)
如果你在段落模式下阅读,每个文件只有一行; 因此没有/ g修饰符的s ///将替换每个文件中的第一个实例,然后移动到下一个文件:
perl -0777 -pi -e's/(width:).*;/$1 100%;/' *.css
Run Code Online (Sandbox Code Playgroud)