Make in bashのadduffix / addprefixと同じこと

Make in bashのadduffix / addprefixと同じこと

スペースで区切られた単語のリストがある場合、外部コマンドを実行せずにすべての単語にプレフィックス(またはサフィックス)を追加するにはどうすればよいですか。

Make には次の構成があります。

$(addprefix foo,bar baz)
⇒ foobar foobaz

ベストアンサー1

bash 5.2(現在のベータ版)以降では、次のことができます。

bash-5.2$ shopt -s extglob patsub_replacement
bash-5.2$ string='foo bar baz'
bash-5.2$ printf '%s\n' "${string//+([^ ])/&suffix}"
foosuffix barsuffix bazsuffix

ksh93と同じ:

printf '%s\n' "${string//+([^ ])/\0suffix}"

またはzsh:

set -o extendedglob
printf '%s\n' "${string//(#m)([^ ])##/${MATCH}suffix}"

おすすめ記事