ワイルドカード文字を使用した入力に基づいて配列内のアイテムをフィルタリングする

ワイルドカード文字を使用した入力に基づいて配列内のアイテムをフィルタリングする

コマンド出力の配列があります。

array=(saf sri trip tata strokes)

これで、ユーザー入力に基づいてアイテムをフィルタリングしたいと思います。ユーザーはワイルドカードを使用することもできるので、ユーザーが を入力すると、*tr*出力は次のようになります。

trip strokes

ベストアンサー1

以下を使用する方が簡単ですzsh

$ array=(saf sri trip tata strokes)
$ pattern='*tr*'
$ printf '%s\n' ${(M)array:#$~pattern}
trip
strokes
  • ${array:#pattern}:配列の要素に展開されます。いいえパターンを一致させます。
  • (M):#(一致の場合):一致する要素で拡張された演算子の意味を復元します。
  • $~pattern、結果のコンテンツは$patternパターンとして扱われます。

おすすめ記事