Como posso aumentar um número encontrado por curinga no comando anterior? (zsh)

1

Eu quero fazer isso:

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

‌Mas eu recebo:

echo Ninja_Turtles_2003_S02E1_DVDRip_30NAMA.mkv

Eu tentei ^(#b)E(0?)^E$((match[1]+1)) , mas não funcionou.

    
por HappyFace 03.09.2018 / 11:01

1 resposta

1

Você precisa da opção extendedglob para (#b) .

Também 05 + 1 rende 6 , não 06 .

Você pode fazer (com extendedglob e histsubstpattern )

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

Ou:

echo ${_//(#b)E(<->)/${(l:2::0:)$((match[1]+1))}
  • <-> é uma forma de <x-y> operador de correspondência de número decimal positivo em que ambos os limites são omitidos, portanto, corresponde a qualquer sequência não vazia de dígitos decimais. O mesmo que [0-9]## (embora ## precise de globagem estendida, enquanto <x-y> não).
  • (l:2::0:) (observe que é um L minúsculo, não o 1 dígito) é o sinalizador de expansão do parâmetro de preenchimento à esquerda, aqui com 0 s, de comprimento 2 .
por 03.09.2018 / 11:20