
私は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つ以上の末尾の数字が必要であることを意味する正規表現。ドット文字はエスケープする必要があります。それ以外の場合は、通常の点、つまり.
「すべての文字」として扱われます。filename
grepへの入力です
あなたの例では、以下を返します。
2.15
2.15
2.15
2.15
一方、一致の 1 つだけが必要な場合は、head
次のように grep にパイプすることもできます。
grep -Eo '[0-9]\.[0-9]+' filename | head -1