Regex 为什么我的回车在perl脚本中不起作用?
从sed进入perl,我试图在CSS文件上进行练习,但我遇到了一些问题,我没有从多个搜索中找到问题所在。在我的bash脚本中,我的目标是一个CSS文件,该文件具有:Regex 为什么我的回车在perl脚本中不起作用?,regex,macos,bash,perl,Regex,Macos,Bash,Perl,从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 {
.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的:\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的:\r:foobar:g'
整个文档都会被foobar
在我的文本编辑器中,我可以做\r^{
,在我的终端中,我可以做s/\n{\n/g;
,但我无法通过sh foo.sh
脚本获得回车符或一行新的perl代码。我尝试过使用\s
(相当于[\t\n\r\f
]的空白字符),但没有成功
那么,为什么回车符在我的perl中不起作用呢?有没有更好的方法来执行我想做的事情呢?如果有更好的方法,请解释一下原因。您正在逐行读取文件,所以每一行都以回车符或换行符结尾——后面没有任何内容。
\r{
不会出现在任何一行上
您可以使用该开关启用slurp模式,并将整个文件作为字符串读取:
perl -0777 -pe 's/\R{/ {\n /g' foo.css
<> > <代码> \r>代码>应匹配任何类型的换行符,如“代码> > r\n\/c>,<代码> \r>代码>,或<代码> \n>代码> .< /p> <代码> ^ /代码>在匹配的中间与您期望的方式不匹配,但您不需要它。您刚刚声明(用<代码> \r< /代码>)您正处于新产品线的起点。只需将其从第一次尝试中删除,然后看看是否有效。您是否绝对确定要使用“\r”而不是“\n”?苹果公司在多年前切换到OS X时将其作为首选产品线。事实上,您显示的输出看起来像是“成功”的经典示例(?)插入可怕的“\r”字符并使其覆盖行中以前的字符…我尝试了
\r
和\n
两种方法,都不在脚本中工作,而是在文本编辑器中工作。删除^
后仍然无法解决问题。要读取整个文件,需要-0777
,而不是-00
。已修复。(-00
也可以在这里使用,因此另一种解决方案是更改解释。)哦,对了。00
参数是段落模式,我在这里工作很幸运。我读写失败。谢谢!