Shell

如何增加上一個命令中萬用字元找到的數字?(zsh)

  • September 3, 2018

我想做到這一點:

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

你可以做(​​用extendedglobhistsubstpattern

^(#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數字)是左填充參數擴展標誌,這裡是0s,長度為2

引用自:https://unix.stackexchange.com/questions/466528