配列の最初の文字列から特定の文字列まで文字列を削除する方法

配列の最初の文字列から特定の文字列まで文字列を削除する方法

${..#..} 通常の文字列のように、配列の最初の文字列から特定の文字列までどのように削除できますか?${s#abc}

$ s=(e u i o foo a)
$ t=(${s[@]#*foo})
$ echo "${t[@]}"

e u i o a

予想の代わりに:

a

これらのニーズを正しく解決するには?

ベストアンサー1

zsh切り替えるオプションがある場合は、次のことができます。

s[(r)foo,-1]=()

rどこにキャンセル下付き文字記号インデックスの代わりに値で配列メンバーを参照できます。ここでは、最初の値から最後の要素()までの()要素の範囲に空のリストが割り当てられます。foo-1

おすすめ記事