Bash の文字列から固定のプレフィックス/サフィックスを削除する 質問する

Bash の文字列から固定のプレフィックス/サフィックスを削除する 質問する

文字列からプレフィックス/サフィックスを削除したいです。たとえば、次のようになります:

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) が削除されたパラメータの値になります。[…]

おすすめ記事