前のコマンドでワイルドカードで見つけた数字をどのように増やすことができますか? (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 + 1606

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

おすすめ記事