2012-04-05 56 views
0

在一些PHP文件中,我想替换"?>\s\t\n\EOF"。 我测试这个搜索使用地方发生这个问题的所有文件:如何替换文件中的某些字符和EOF

ack "\?\>[\s\n\t]+\z" 

我拿的结果,但我想只有?>EOF替换此。 我用“sed”测试另一个命令:

sed 's/?>[\n\t\s]+\z/?>/' 

你有一些提示吗?

例如:

?> 
+0

你需要解释你想要做得更清楚。我怀疑你可能试图去除包含PHP的关闭标记的文件的最后一行之后的尾随空白,制表符和换行符,但不清楚。你能展示一个你得到的输入文件的例子(最小例子中可能有4行)和你想要的输出。至于提示,大多数版本的'sed'默认都不识别Perl正则表达式;有些人将它们作为选项。 – 2012-04-05 14:34:35

+0

应该是什么意思? What \ z? – 2012-04-05 15:08:46

+0

\ s是空格,\ z是EOF – Herve 2012-04-05 15:16:47

回答

1

ACK是基于Perl的,和sed不承认之类的东西\ž。使用Perl:

perl -pe 's/\?\>[\s\n\t]+\z/?>\n/' 

此外,\ z是不是EOF,而仅仅是结束串的,所以\ Z ^将匹配每一行的末尾。如果您只想在文件末尾匹配,则需要使用\ z以外的内容。

+0

好的谢谢,我继续我的研究 – Herve 2012-04-06 06:55:47

相关问题