2012-04-05 87 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

相關問題