LINUX.ORG.RU

[pcre] Не могу составить правильное выражение для rename

 


0

0

Имеется такое выражение для команды (p)rename:

s/([a-z_]*)([1-9]{1})(\.[a-z])/$10$2$3/

Символ '0' во второй части должен рассматриваться именно как символ, а не как часть back reference. Как это лучше сделать? Named subpatterns пробовал, но оно не соглашается ни с каким из найденных вариантов синтаксиса.

Задача вообще: превратить file_name_1.ext в file_name_01.ext

★★★★★

Лучше бы показал что из чего получить надо. А то насколько я понял твой регексп, цифра в имени файла може быть только одна, ты хочешь к ней приписать 0, почему не сделать просто «s/[1-9]/0&» ?

adriano32 ★★★
()
Ответ на: комментарий от arsi

Вопрос в том, как сделать 0 не быть частью back reference. Просто man pcrepattern не всё раскрывает, КМК, а в интернетах найденное не работало.

>> s/(?<=[a-z_])(?=\d\.[a-z])/0/

Ничего не понял, но это работает. Спасибо :)

GotF ★★★★★
() автор топика
Ответ на: комментарий от GotF

в перле, например, можно написать ${1}0, как в баше. а в других утилитах обычно только 9 групп поддерживается, это и сбило с толку :)

arsi ★★★★★
()
Ответ на: комментарий от arsi

>> ${1}0

Гы, вот именно это я и ниасилил найти. Ещё раз спасибо.

GotF ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.