Bashに文字列があるとしましょうstrname
。
strname="ph7go04325r"
抽出したい最初 "3"
性格と最後 "r"
文字を入力しstrname
て結果を文字列に保存しますstrresult
。上記の例では、結果strresult
は次のようになります。
strresult="25"
最初の"3"
キャラクターはいいえ同様に、文字列の位置8にする必要がありますstrname
。最後の項目"r"
は次のとおりです。いいえ文字列の位置 11 に配置する必要があります。したがって、次の文字列はすべて次のものをstrname
生成する必要がありますstrresult="25"
。
strname="ph11go04325raa"
strname="325r"
strname="rgo04325raa"
またstrname=ph12go04330raa"
作成する必要がありますstrresult="30"
。
私はbashスクリプトに最初に触れましたが、このような文字列パターンのマッチングをどこから始めるべきかわかりません。おすすめメニューとは何ですか?
ベストアンサー1
正規表現を使用して、bash(3.0以降)でこれを行うことができます。
if [[ $strname =~ 3(.+)r ]]; then
strresult=${BASH_REMATCH[1]}
else
echo "unable to parse string $strname"
fi
Bashでは、正規表現のキャプチャグループが特別な配列に配置されますBASH_REMATCH
。要素 0 には完全一致が含まれ、要素 1 には最初のキャプチャグループの一致が含まれます。