从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;
但是我无法通过带有{{1的脚本执行的回车或新行来处理perl }}。我尝试使用sh foo.sh
(等同于[\s
]的空白字符),但没有成功。
那么为什么马车不能用我的perl工作呢?有没有更好的方法来执行我想要做的事情?如果有更好的方法可以解释原因,请。
答案 0 :(得分:3)
您逐行读取文件,因此每行以回车符或换行符结束 - 之后没有任何内容。 \r{
不会出现在任何一行上。
您可以使用-0777
开关启用slurp模式并将整个文件作为字符串读取:
perl -0777 -pe 's/\R{/ {\n /g' foo.css
\R
应匹配任何类型的换行符,无论是\r\n
,\r
还是\n
。