文字列からバージョン番号を抽出する方法

文字列からバージョン番号を抽出する方法

私はUNIXを初めて使用します。

次のように、この文字列からバージョン番号を一度に1つずつ抽出したい場合がありますが、どうすればよいですか?

release-2.15-5 > 2.15
release-2.15 > 2.15
2.15 > 2.15
2.15-5 > 2.15

これをしましたが、echo release-2.15-5 | cut -f1 -d'-'結果が正しくありません。

ベストアンサー1

文脈がそれほど多くないことを考えると、そのgrep情報抽出のガイドラインを確認することをお勧めします。たとえば、入力がこのタイプの場合は、grep次のように使用できます。

grep -Eo '[0-9]\.[0-9]+' filename 

どこ:

  • -E拡張正規表現を使用することを示すフラグです(確認ここより多くの情報を知りたい場合)

  • -o見つかった場合に正確に一致する項目のみを返すように指定するフラグ。

  • [0-9]\.[0-9]+数字、点、および1つ以上の末尾の数字が必要であることを意味する正規表現。ドット文字はエスケープする必要があります。それ以外の場合は、通常の点、つまり.「すべての文字」として扱われます。

  • filenamegrepへの入力です

あなたの例では、以下を返します。

2.15
2.15
2.15
2.15

一方、一致の 1 つだけが必要な場合は、head次のように grep にパイプすることもできます。

grep -Eo '[0-9]\.[0-9]+' filename | head -1

おすすめ記事