从sed踏入perl,我正在尝试在CSS文件上练习,但是我遇到问题,但我没有发现来自多个搜索的问题。在我的bash脚本中,我针对具有:
的CSS文件.thisclass
{ font-family: "Times New Roman";
line-height: 1.20em;
font-size: 1.00em;
margin: .25em 0;
color: rgb(0,0,0);
}
我的目标是:
.thisclass {
font-family: "Times New Roman";
line-height: 1.20em;
font-size: 1.00em;
margin: .25em 0;
color: rgb(0,0,0);
}
我尝试的perl是 perl -pe 's:r^{: {r:g'
,但它不起作用。如果我尝试:
perl -pe 's:^{:foobar:g'
输出为:
.thisclass
foobar font-family: "Times New Roman";
line-height: 1.20em;
font-size: 1.00em;
margin: .25em 0;
color: rgb(0,0,0);
}
如果我尝试了perl -pe 's:r:foobar:g'
,则整个文档将通过foobar
在我的文本编辑器中,我可以执行r^{
,在我的终端中我可以进行s/n{/ {n/g;
,但是我无法获得运输返回或通过sh foo.sh
脚本执行的PERL工作的新线路。我尝试使用 s
(whitespace字符等于[ tnrf
]),但没有成功。
那么,为什么托架返回在我的perl中不起作用?有没有更好的方法来执行我想要做的事情?如果有更好的方法,您可以解释原因。
您正在阅读逐条读取文件,因此每行都以马车返回或新线结束 - 之后什么都没有。r{
没有出现在任何一行上。
您可以使用-0777
开关来启用Slurp模式,然后将整个文件读为字符串:
perl -0777 -pe 's/R{/ {n /g' foo.css
R
应匹配任何类型的Newline,无论是rn
,r
还是n
。