-1

Я использую программу rpl в Linux для замены date( с pdate( в некоторых файлах).
Но это говорит, что A Total of 0 matches replaced in 1 file searched.
пока вывод grep для date( это:

ariyan@ariyan-laptop:/var/www/moodle21$ grep -wR 'date(' admin/uploaduser.php
$today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);

Я использую rpl как это:

rpl -wR 'date(' 'pdate(' admin/uploaduser.php

В чем проблема?

1 ответ1

3

Я никогда раньше не использовал этот инструмент, но, глядя на описание того, что "-w", я предполагаю, что он обрабатывает границы слов, немного отличающиеся от ожидаемых. Если вы снимите «-w», это должно сработать. Кроме того, в примере вы дали ему один файл для сопоставления, так что -R также не вступит в игру.

Пытаться:

rpl 'date(' 'pdate(' admin/uploaduser.php

РЕДАКТИРОВАТЬ: После небольшого исследования, я обнаружил, что есть ошибка, связанная с тем, что rpl не обрабатывает знаки препинания как границы слов, поэтому это не работает. Поэтому единственный вариант - использовать другой инструмент. Сед приходит на ум для этой задачи, так что вы можете выполнить это с помощью следующего:

sed -i 's/\bdate(/pdate(/g' admin/uploaduser.php

Это будет выполнять внутреннюю замену (-i) так же, как это сделал бы rpl, и соответствует вещам, которые начинаются с даты, и заменяет их на pdate.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .