bashの1.2.3-SNAPSHOTから1.2.3サブストリングを抽出する方法は?
頑張った
echo '1.2.3-SNAPSHOT' | grep -o "^.*(?=(\-SNAPSHOT$))"
しかし役に立たない
理想的には、入力が1.2.3または1.2.3-SNAPSHOTの場合、コマンドがどちらの場合も1.2.3を返すようにしたいと思います。
答え1
bash
パラメータ拡張十分だろう
var='1.2.3-SNAPSHOT'
echo "${var%%-*}"
1.2.3
var='1.2.3'
echo "${var%%-*}"
1.2.3
答え2
たとえば、次のようにできます。egrep
次のように使用してください。
echo "1.2.3-SNAPSHOT" | egrep -o '[0-9]+.[0-9]+.[0-9]'
説明するシナリオは次のとおりです。
入力が1.2.3または1.2.3-SNAPSHOTの場合、どちらの場合も1.2.3が返されます。
しかし、バージョンが「3.1.33」(3番目の数字に多くの数字を含む)と同じかもしれないと思います。この場合は、1つだけ追加しても*
かまいません。
echo "3.12.32-SNAoiashfsof" | egrep -o '[0-9]+.[0-9]+.[0-9]*'
答え3
sed -ne's/^\(1\.2\.3\)\(-SNAPSHOT\)\{0,1\}$/\1/p' <in >out
...印刷されます1.2.3
次のいずれかに正確に一致する入力ラインのみを出力します。1.2.3
または1.2.3-SNAPSHOT
。
答え4
別のオプション...
echo "1.2.3-SNAPSHOT" | cut -d'-' -f1