이전 명령에서 와일드카드로 찾은 숫자를 어떻게 증가시킬 수 있나요? (zsh)

이전 명령에서 와일드카드로 찾은 숫자를 어떻게 증가시킬 수 있나요? (zsh)

나는 이것을 달성하고 싶습니다 :

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

하지만 나는 다음을 얻습니다.

echo Ninja_Turtles_2003_S02E1_DVDRip_30NAMA.mkv

나는 그것을 시도했지만 ^(#b)E(0?)^E$((match[1]+1))성공하지 못했습니다.

답변1

필요한 extendedglob옵션 (#b).

아직도 05 + 1아니야 .606

( extendedglob및 사용 histsubstpattern)을 수행할 수 있습니다.

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

또는:

echo ${_//(#b)E(<->)/${(l:2::0:)$((match[1]+1))}
  • <-><x-y>두 경계가 모두 생략되어 비어 있지 않은 10진수 시퀀스와 일치하는 양의 10진수 일치 연산자 형식입니다 . 동일합니다 [0-9]##( ##전역 변수를 확장해야 하지만 <x-y>필수는 아닙니다).
  • (l:2::0:)(숫자가 아닌 소문자 L이라는 점에 유의하세요 1)는 왼쪽 패드 매개변수 확장 플래그(여기서는 0s, length ) 입니다 2.

관련 정보