文字列からプレフィックス/サフィックスを削除したいです。たとえば、次のようになります:
string="hello-world"
prefix="hell"
suffix="ld"
次の結果を得るにはどうすればよいですか?
"o-wor"
ベストアンサー1
$ prefix="hell"
$ suffix="ld"
$ string="hello-world"
$ foo=${string#"$prefix"}
$ foo=${foo%"$suffix"}
$ echo "${foo}"
o-wor
これは、シェルパラメータの拡張マニュアルのセクション:
${parameter#word}
${parameter##word}
単語はパターンを生成するために展開され、以下に説明するルールに従ってマッチングされます(パターンマッチング)。パターンがパラメータの展開された値の先頭と一致する場合、展開の結果は、最短一致パターン (case
#
) または最長一致パターン (##
case) が削除されたパラメータの展開された値になります。[…]
${parameter%word}
${parameter%%word}
単語はパターンを生成するために展開され、以下に説明するルールに従ってマッチングされます(パターンマッチング)。パターンがパラメータの展開された値の末尾の部分に一致する場合、展開の結果は、最短の一致パターン (case
%
) または最長の一致パターン (%%
case) が削除されたパラメータの値になります。[…]