memo

2011-02-28

zsh で array からパターンにマッチしたものだけ抜き出す

$ typeset -a x
$ x=(hoge fuga piyo foo bar)
$ print -l "${(@M)x:#f*}"
fuga
foo

associative array の場合は、

$ typeset -A y
$ y=(k1 hoge k2 fuga k3 piyo k4 foo k5 bar)
$ print -l "${(@kv)y[(R)f*]}"
k2
fuga
k4
foo