繁体   English   中英

为什么我的回车不能用我的perl脚本工作?

[英]Why is my carriage return not working in my perl script?

从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 -pe 's:\\r^{: {\\r:g'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 (相当于[ \\t\\n\\r\\f ]的空格字符),但没有成功。

那么为什么回车不能在我的perl工作呢? 有没有更好的方法来执行我想要做的事情? 如果有更好的方法可以解释原因,请。

你是逐行读取文件的,所以每一行都以回车符或换行符结束 - 后面没有任何内容。 \\r{不会出现在任何一行上。

您可以使用-0777开关启用-0777模式并将整个文件作为字符串读取:

perl -0777 -pe 's/\R{/ {\n /g' foo.css

\\R \\r\\n应匹配任何类型的换行符,无论是\\r\\n\\r \\n还是\\n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM