bash - 最初の区切り文字の前後の文字列を取得する

bash - 最初の区切り文字の前後の文字列を取得する

値が2022.2.1のフィールドバージョンがあります。値を求める必要があります。2022.2私のすべての例では(最初の区切り文字の前後の文字列)

version="2022.2.1"
echo "${version%.*}"
2022.2

これはうまくいきます。ただし、バージョンに区切り文字として複数の点が含まれている場合は機能しません(例version="2022.2.1.1":)。ここに値が必要です。2022.2

version="2022.2.1 2021.1.0"または、バージョンに複数のバージョンが含まれていても機能しません()。繰り返しますが、この例では最初の値のみが必要で、最初の区切り文字の前後の最初の文字列です。だから私はいつも価値を得たいと思います。2022.2

このユースケースのベストプラクティスは何ですか?ありがとうございます!

ベストアンサー1

変数の変更では、これを簡単に行うことはできません。ここでは、区切られたcut最初の2つのフィールドを選択しました.man cut詳細を参照)。

for version in '2022.2.1' '2022.2.1.1' '2022.1.1 2021.1.0'
do
    shorter=$(cut -d. -f1-2 <<<"$version")
    printf "version=%s => %s\n" "$version" "$shorter"
done

出力

version=2022.2.1 => 2022.2
version=2022.2.1.1 => 2022.2
version=2022.1.1 2021.1.0 => 2022.1

POSIXシェルがない場合は、<<<文字列を次にパイプできます。cut

shorter=$(printf "%s\n" "$version" | cut -d. -f1-2)

おすすめ記事