部分的に書式設定されたテキストを抽出する移植可能な方法はありますか?

部分的に書式設定されたテキストを抽出する移植可能な方法はありますか?

node --version(具体的に)、およびの形式でテキストを出力するプログラムがあり、これはすべて数値です。 LinuxとOS Xで動作する移植可能な方法でこの文字列からメジャーバージョンを抽出したいと思います。私は現在使用していますv<major>.<minor>.<patch><major><minor><patch>

grep -oP "(?<=v)(\d+)(?=.\d+.\d+)"

しかし、これは別のフラグを使用しているため、OS Xでは機能しないようです。両方のシステムでこれを行う方法はありますか?

答え1

Bashでは、次のものを使用できます。

IFS='v.' read -r throwaway major minor patch < <(node --version)

変数はthrowaway初期化前に空白になりますv。テストに使用できるOS Xシステムはありませんが、これは良いbashスクリプトでなければなりません。

答え2

mikeservのコメントに触発され、次のコマンドを使用してこれを行います。

node --version | cut -d. -f1 | cut -c2-

区切り文字のあるカットを使用して文字列のみを抽出し.ます。v<major>次にcutを再度使用して、2番目の文字から始まるすべての文字を取得しますv

これはcoreutils(除外node)のみを使用するため、移植性を最大限に高めます。

関連情報