【发布时间】:2015-07-17 01:41:05
【问题描述】:
从 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(空白字符相当于[\t\n\r\f])但没有成功。
那么为什么回车在我的 perl 中不起作用?有没有更好的方法来执行我想做的事情?如果有更好的方法,请解释原因。
【问题讨论】:
-
^在比赛中间与您期望的方式不匹配,但您不需要它。您刚刚断言(使用\r)您处于新行的开头。只需从第一次尝试中删除它,看看是否有效。 -
您确定要使用“\r”而不是“\n”吗? Apple 在几年前切换到 OS X 时切换了它的首选行。事实上,您显示的输出看起来像是“成功”(?)的经典示例,插入了可怕的“\r”字符并让它覆盖以前的字符上线了....
-
我已经尝试过
\r和\n,但都不能在脚本中工作,但在文本编辑器中工作。删除^后仍不能解决问题。