我想完成这个:
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
,6
不06
。
你可以(用extendedglob
和histsubstpattern
)
^(#b)E(<->)^E${(l:2::0:)$((match[1]+1))}
或者:
echo ${_//(#b)E(<->)/${(l:2::0:)$((match[1]+1))}
<->
是正十进制数匹配运算符的一种形式<x-y>
,其中两个边界都被省略,因此匹配任何非空的十进制数字序列。相同[0-9]##
(尽管##
需要扩展全局变量,但<x-y>
不需要)。(l:2::0:)
(请注意,它是小写 L,而不是数字1
)是左侧填充参数扩展标志,此处为0
s,长度为2
。