Bash:文字列の部分文字列を一致させ、キーと値のペアを抽出します。

Bash:文字列の部分文字列を一致させ、キーと値のペアを抽出します。

次のように予想される文字列があります。

final old-version=1.2.3-old new-version=1.2.4

old-version文字列からバージョン番号を抽出し、2つの変数を作成しようとしていますnew-version

old-version=1.2.3-old
new-version=1.2.4

これが私が思いついたものです:

x='final old-version=1.2.3-old new-version=1.2.4'
echo $x | awk '{print $2}' | cut -d'=' -f2

これを使って私は価値を得ましたold-version。ただし、何らかの理由で次の文字列が表示された場合、このアプローチは非常に迅速に中断されます。final new-version=1.2.4 old-version=1.2.3-old

部分文字列とその値を抽出するより良い、よりきれいで、より安定した方法がありますか?

ベストアンサー1

bashシェルとPEパラメータを使用した拡張と読み取り

x='final old-version=1.2.3-old new-version=1.2.4'
read -r _ old new <<< "$x"; printf '%s\n' "${old#*=}" "${new#*=}"

または-a読み取りオプションのある配列を使用してください。

x='final old-version=1.2.3-old new-version=1.2.4'
read -ra var <<< "$x"; printf '%s\n' "${var[1]#*=}" "${var[2]#*=}"

おすすめ記事