他の文字の最初のインスタンスより前のすべての文字を取得する

他の文字の最初のインスタンスより前のすべての文字を取得する

私が持っていると言う

npmv="3.4.5";

最初のドットの前にすべての文字を取得する最も簡単な方法は何ですか?この場合、「3」になりますか?

答え1

npmv="3.4.5"
major=${npmv%%.*}

printf 'The major version number is %s\n' "$major"

パラメータ置換${variable%%pattern}が削除されます。最長patternの値と一致するサフィックス文字列$variable。パターンは、正規表現ではなくファイル名のワイルドカードパターンとして扱われます。これは、すべてのPOSIXシェルで機能する標準パラメータの置き換えです。

同じことですが、単一を使用すると、%例では文字列の末尾のみが削除されます(.5最短サフィックスパターンマッチング)。プレフィックス文字列の場合は#代わりにを使用してください%

また、見ることができますパラメータ拡張に関するPOSIX規格の一部、そしてシェルマニュアル。

関連情報