2012-04-05 2 views
0

В некоторых файлах PHP я хочу заменить "?>\s\t\n\EOF". я проверить это для поиска всех файлов, где эта проблема возникла с помощью:Как заменить некоторые символы и EOF в файле

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

Я принимаю результат, но я хочу заменить это только ?>EOF. я испытываю другую команду с «СЭД»:

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

У вас есть какие-то советы?

пример:

?> 
+0

Вам нужно объяснить, что вы пытаетесь сделать более четко. Я подозреваю, что вы можете попытаться удалить завершающие пробелы, вкладки и новые строки после последней строки в файле, который содержит маркер закрытия для PHP, но это неясно. Можете ли вы показать пример входных файлов, которые у вас есть (может быть, 4 строки в минимальном примере) и желаемый результат. Что касается советов, большинство версий 'sed' не распознают регулярные выражения Perl по умолчанию; некоторые имеют их в качестве опции. –

+0

Что должно означать? Что \ z? –

+0

\ s - пробел, \ z - EOF – Herve

ответ

1

ПДТ Perl на основе и СЭД не признает такие вещи, как \ г. Использование Perl:

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

Кроме того, \ г не является EOF, а просто конец строки, так \ г будет соответствовать конец каждой строки. Если вы хотите, чтобы это соответствовало только в конце файла, вам нужно будет использовать что-то другое, кроме \ z.

+0

ОК спасибо, я продолжаю свое исследование – Herve

Смежные вопросы