パッケージ名からパッケージバージョンのみを抽出したいです。var
パッケージ名(例::)を含む変数があるとしますvar="nfs-utils-1.2.6-6.fc17.i686.rpm"
。抽出された文字列はです1.2.6-6
。解析に使用される方法は、すべての方法(regex、awk、cut)です。
編集:上記の例から実際に抽出したい1.2.6
答え1
これは移植性が悪いですが、この場合は次のようにgrep
動作します。
echo $var | egrep -o '[0-9].*-[0-9]'
1.2.6-6
答え2
トリガーが言ったように、もしこれらのパッケージがインストールされているのと同じシステムから値を抽出するには、RPMに直接バージョンを要求できます。
ver=$(rpm --queryformat="%{VERSION}" -q nfs-utils)
答え3
最後の2つの「-」文字がバージョンを囲みます。
したがって、「$」を使用して文字列の末尾に固定された* REを作成できます。
例えば
$ echo nfs-utils-1.2.6-6.fc17.i686.rpm | sed -e 's,.*-\([^-]*\)-[^-]*$,\1,'
1.2.6