Как я могу увеличить число, найденное подстановочным знаком в предыдущей команде? (ЗШ)

Я хочу сделать это:

setopt HIST_SUBST_PATTERN echo Ninja_Turtles_2003_S02E05_DVDRip_30NAMA.mkv ^E(0?)^E$((match[1]+1)) # resulting in: echo Ninja_Turtles_2003_S02E06_DVDRip_30NAMA.mkv 

UtНо я получаю:

 echo Ninja_Turtles_2003_S02E1_DVDRip_30NAMA.mkv 

Я пытался ^(#b)E(0?)^E$((match[1]+1)) , но это не сработало.

    One Solution collect form web for “Как я могу увеличить число, найденное подстановочным знаком в предыдущей команде? (ЗШ)”

    Вам нужна опция extendedglob для (#b) .

    Также 05 + 1 дает 6 , а не 06 .

    Вы могли бы сделать (с extendedglob и histsubstpattern )

     ^(#b)E(< ->)^E${(l:2::0:)$((match[1]+1))} 

    Или же:

     echo ${_//(#b)E(< ->)/${(l:2::0:)$((match[1]+1))} 
    • < -> является формой оператора сопоставления положительных десятичных чисел где обе границы опущены, поэтому соответствует любой непустой последовательности десятичных цифр. То же, что [0-9]## (хотя ## нужен расширенный глобус, а нет).
    • (l:2::0:) (обратите внимание, что это строчная буква L, а не цифра 1 ) – это флаг расширения параметра слева, здесь с 0 с, длиной 2 .
    Linux и Unix - лучшая ОС в мире.