Shell
如何增加上一個命令中萬用字元找到的數字?(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))
了,但沒有用。
您
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
。