Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 为什么我的回车在perl脚本中不起作用?_Regex_Macos_Bash_Perl - Fatal编程技术网

Regex 为什么我的回车在perl脚本中不起作用?

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 {

从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的:\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
参数是段落模式,我在这里工作很幸运。我读写失败。谢谢!