1. ホーム
  2. bash

[解決済み] Bashで文字列から固定プレフィックス/サフィックスを削除する

2022-03-16 23:18:37

質問

私の中で bash スクリプト 文字列とその接頭辞/接尾辞があります。元の文字列からプレフィックス/サフィックスを削除したいのですが。

例えば、次のような値があるとします。

string="hello-world"
prefix="hell"
suffix="ld"

どうすれば次のような結果になるのでしょうか?

result="o-wor"

どのように解決するのですか?

$ foo=${string#"$prefix"}
$ foo=${foo%"$suffix"}
$ echo "${foo}"
o-wor

に記載されています。 シェルパラメータ拡張 の項をご覧ください。

${parameter#word}
${parameter##word}

この単語は展開されてパターンを生成し、後述のルールに従ってマッチングされる( パターンマッチング ). パターンがパラメータの展開された値の先頭に一致する場合,展開の結果は,最も短いマッチングパターンを持つパラメータの展開された値( # の場合)、または最長マッチングパターン( ## の場合)を削除した。[...]

${parameter%word}
${parameter%%word}

この単語は展開されてパターンを生成し、後述のルールに従ってマッチングされる( パターンマッチング ). パターンが,展開されたparameterの値の末尾にマッチする場合,展開の結果は,最も短いマッチングパターンを持つparameterの値( % の場合)、または最長マッチングパターン( %% の場合)を削除した。[...]